diff --git a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py index 1169112ce7..d065516835 100644 --- a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py +++ b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py @@ -43,14 +43,12 @@ class Command(BaseCommand): try: model.image.render_variations(replace=False) except FileNotFoundError: - logger.error(f"ERROR: Image file '{img}' is missing") + logger.warning(f"Warning: Image file '{img}' is missing") except UnidentifiedImageError: - logger.error(f"ERROR: Image file '{img}' is not a valid image") + logger.warning(f"Warning: Image file '{img}' is not a valid image") def handle(self, *args, **kwargs): - logger.setLevel(logging.INFO) - logger.info("Rebuilding Part thumbnails") for part in Part.objects.exclude(image=None): diff --git a/InvenTree/InvenTree/static/script/chart.js b/InvenTree/InvenTree/static/script/chart.js new file mode 100644 index 0000000000..2b3e9984dc --- /dev/null +++ b/InvenTree/InvenTree/static/script/chart.js @@ -0,0 +1,13 @@ +/*! + * Chart.js v3.7.1 + * https://www.chartjs.org + * (c) 2022 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";const t="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function e(e,i,s){const n=s||(t=>Array.prototype.slice.call(t));let o=!1,a=[];return function(...s){a=n(s),o||(o=!0,t.call(window,(()=>{o=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const s=t=>"start"===t?"left":"end"===t?"right":"center",n=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,o=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=t.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; +/*! + * @kurkle/color v0.1.9 + * https://github.com/kurkle/color#readme + * (c) 2020 Jukka Kurkela + * Released under the MIT License + */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l="0123456789ABCDEF",h=t=>l[15&t],c=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?h:c;return t?"#"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):""):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const y=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function v(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function w(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function M(t,e,i){const s=v(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function k(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===e?(i-s)/h+(i>16&255,o>>8&255,255&o]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let s=k(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=P(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function z(t){return"r"===t.charAt(0)?function(t){const e=_.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=255&(e[8]?p(t):255*t)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?p(i):i),s=255&(e[4]?p(s):s),n=255&(e[6]?p(n):n),{r:i,g:s,b:n,a:o}}}(t):C(t)}class F{constructor(t){if(t instanceof F)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=I(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*r[s[1]],g:255&17*r[s[2]],b:255&17*r[s[3]],a:5===o?17*r[s[4]]:255}:7!==o&&9!==o||(n={r:r[s[1]]<<4|r[s[2]],g:r[s[3]]<<4|r[s[4]],b:r[s[5]]<<4|r[s[6]],a:9===o?r[s[7]]<<4|r[s[8]]:255})),i=n||L(t)||z(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],s=b(e[1]),n=b(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${x(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const s=i.rgb,n=t.rgb;let o;const a=e===o?.5:e,r=2*a-1,l=s.a-n.a,h=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;o=1-h,s.r=255&h*s.r+o*n.r+.5,s.g=255&h*s.g+o*n.g+.5,s.b=255&h*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,i.rgb=s}return i}clone(){return new F(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function B(t){return new F(t)}const V=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return V(t)?t:B(t)}function N(t){return V(t)?t:B(t).saturate(.5).darken(.1).hexString()}function H(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)}function U(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const X=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,Z=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function J(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function Q(t,e,i,s){let n,o,a;if(Y(t))if(o=t.length,s)for(n=o-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;ni;)t=t[e.substr(i,s-i)],i=s+1,s=rt(e,i);return t}function ht(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ct=t=>void 0!==t,dt=t=>"function"==typeof t,ut=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function ft(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const gt=Object.create(null),pt=Object.create(null);function mt(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>N(e.backgroundColor),this.hoverBorderColor=(t,e)=>N(e.borderColor),this.hoverColor=(t,e)=>N(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return xt(this,t,e)}get(t){return mt(this,t)}describe(t,e){return xt(pt,t,e)}override(t,e){return xt(gt,t,e)}route(t,e,i,s){const n=mt(this,t),o=mt(this,i),a="_"+e;Object.defineProperties(n,{[a]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=o[s];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const _t=Math.PI,yt=2*_t,vt=yt+_t,wt=Number.POSITIVE_INFINITY,Mt=_t/180,kt=_t/2,St=_t/4,Pt=2*_t/3,Dt=Math.log10,Ct=Math.sign;function Ot(t){const e=Math.round(t);t=Lt(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Dt(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function At(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function Ut(t){return!t||$(t.size)||$(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Xt(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function qt(t,e,i,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(n=s.data={},o=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==o.strokeColor;let l,h;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);$(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,o),l=0;lt[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const re=(t,e,i)=>ae(t,i,(s=>t[s][e]ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+ht(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function ue(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ce.forEach((e=>{delete t[e]})),delete t._chartjs)}function fe(t){const e=new Set;let i,s;for(i=0,s=t.length;iwindow.getComputedStyle(t,null);function be(t,e){return xe(t).getPropertyValue(e)}const _e=["top","right","bottom","left"];function ye(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=_e[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ve(t,e){const{canvas:i,currentDevicePixelRatio:s}=e,n=xe(i),o="border-box"===n.boxSizing,a=ye(n,"padding"),r=ye(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.native||t,s=i.touches,n=s&&s.length?s[0]:i,{offsetX:o,offsetY:a}=n;let r,l,h=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(o,a,i.target))r=o,l=a;else{const t=e.getBoundingClientRect();r=n.clientX-t.left,l=n.clientY-t.top,h=!0}return{x:r,y:l,box:h}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const we=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=xe(t),o=ye(n,"margin"),a=me(n.maxWidth,t,"clientWidth")||wt,r=me(n.maxHeight,t,"clientHeight")||wt,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=pe(t);if(o){const t=o.getBoundingClientRect(),a=xe(o),r=ye(a,"border","width"),l=ye(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=me(a.maxWidth,o,"clientWidth"),n=me(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||wt,maxHeight:n||wt}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=ye(n,"border","width"),e=ye(n,"padding");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=we(Math.min(h,a,l.maxWidth)),c=we(Math.min(c,r,l.maxHeight)),h&&!c&&(c=we(h/2)),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t,e){return"native"in t?{x:t.x,y:t.y}:ve(t,e)}function Ce(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?le:re;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Oe(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[r](n[a],s)&&o.push({element:t,datasetIndex:e,index:i}),t.inRange(n.x,n.y,s)&&(l=!0)})),i.intersect&&!l?[]:o}var Ee={modes:{index(t,e,i,s){const n=De(e,t),o=i.axis||"x",a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,s){const n=De(e,t),o=i.axis||"xy";let a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tAe(t,De(e,t),i.axis||"xy",s),nearest:(t,e,i,s)=>Le(t,De(e,t),i.axis||"xy",i.intersect,s),x:(t,e,i,s)=>Re(t,e,{axis:"x",intersect:i.intersect},s),y:(t,e,i,s)=>Re(t,e,{axis:"y",intersect:i.intersect},s)}};const Ie=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),ze=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Fe(t,e){const i=(""+t).match(Ie);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function Be(t,e){const i={},s=U(e),n=s?Object.keys(e):e,o=U(t)?s?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+o(t)||0;return i}function Ve(t){return Be(t,{top:"y",right:"x",bottom:"y",left:"x"})}function We(t){return Be(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Ne(t){const e=Ve(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function He(t,e){t=t||{},e=e||bt.font;let i=K(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=K(t.style,e.style);s&&!(""+s).match(ze)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:K(t.family,e.family),lineHeight:Fe(K(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:K(t.weight,e.weight),string:""};return n.string=Ut(n),n}function je(t,e,i,s){let n,o,a,r=!0;for(n=0,o=t.length;ni&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ye(t,e){return Object.assign(Object.create(t),e)}const Ue=["left","top","right","bottom"];function Xe(t,e){return t.filter((t=>t.pos===e))}function qe(t,e){return t.filter((t=>-1===Ue.indexOf(t.pos)&&t.box.axis===e))}function Ke(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ge(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ue.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ei(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ke(Xe(e,"left"),!0),n=Ke(Xe(e,"right")),o=Ke(Xe(e,"top"),!0),a=Ke(Xe(e,"bottom")),r=qe(e,"x"),l=qe(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xe(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;Q(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);Je(u,Ne(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Ge(l.concat(h),d);ei(r.fullSize,f,d,g),ei(l,f,d,g),ei(h,f,d,g)&&ei(l,f,d,g),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(f),si(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,si(r.rightAndBottom,f,d,g),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Q(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})}))}};function oi(t,e=[""],i=t,s,n=(()=>t[0])){ct(s)||(s=mi("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>oi([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>ci(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=mi(li(o,t),i),ct(n))return hi(t,n)?gi(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xi(t).includes(e),ownKeys:t=>xi(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function ai(t,e,i,s){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ri(t,s),setContext:e=>ai(t,e,i,s),override:n=>ai(t.override(n),e,i,s)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ci(t,e,(()=>function(t,e,i){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=t;let r=s[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),hi(t,e)&&(e=gi(n._scopes,n,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=i;if(ct(o.index)&&s(t))e=e[o.index%e.length];else if(U(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=gi(s,n,t,l);e.push(ai(i,o,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));hi(e,r)&&(r=ai(r,n,o&&o[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function ri(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:dt(i)?i:()=>i,isIndexable:dt(s)?s:()=>s}}const li=(t,e)=>t?t+ht(e):e,hi=(t,e)=>U(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ci(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function di(t,e,i){return dt(t)?t(e,i):t}const ui=(t,e)=>!0===t?e:"string"==typeof t?lt(e,t):void 0;function fi(t,e,i,s,n){for(const o of e){const e=ui(i,o);if(e){t.add(e);const o=di(e._fallback,i,n);if(ct(o)&&o!==i&&o!==s)return o}else if(!1===e&&ct(s)&&i!==s)return null}return!1}function gi(t,e,i,s){const n=e._rootScopes,o=di(e._fallback,i,s),a=[...t,...n],r=new Set;r.add(s);let l=pi(r,a,i,o||i,s);return null!==l&&((!ct(o)||o===i||(l=pi(r,a,o,l,s),null!==l))&&oi(Array.from(r),[""],n,o,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const n=s[e];if(Y(n)&&U(i))return i;return n}(e,i,s))))}function pi(t,e,i,s,n){for(;i;)i=fi(t,e,i,s,n);return i}function mi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ct(e))return e}}function xi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}const bi=Number.EPSILON||1e-14,_i=(t,e)=>e"x"===t?"y":"x";function vi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=Vt(o,n),l=Vt(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function wi(t,e="x"){const i=yi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=_i(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,Pi=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yt/i),Di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yt/i)+1,Ci={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kt),easeOutSine:t=>Math.sin(t*kt),easeInOutSine:t=>-.5*(Math.cos(_t*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Si(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Si(t)?t:Pi(t,.075,.3),easeOutElastic:t=>Si(t)?t:Di(t,.075,.3),easeInOutElastic(t){const e=.1125;return Si(t)?t:t<.5?.5*Pi(2*t,e,.45):.5+.5*Di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-Ci.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*Ci.easeInBounce(2*t):.5*Ci.easeOutBounce(2*t-1)+.5};function Oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ai(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function Ti(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=Oi(t,n,i),r=Oi(n,o,i),l=Oi(o,e,i),h=Oi(a,r,i),c=Oi(r,l,i);return Oi(h,c,i)}const Li=new Map;function Ri(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=Li.get(i);return s||(s=new Intl.NumberFormat(t,e),Li.set(i,s)),s}(e,i).format(t)}function Ei(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ii(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function zi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Fi(t){return"angle"===t?{between:Ht,compare:Wt,normalize:Nt}:{between:Yt,compare:(t,e)=>t-e,normalize:t=>t}}function Bi({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Vi(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Fi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Fi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Bi({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Bi({start:_,end:d,loop:u,count:a,style:f})),g}function Wi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Hi(t,[{start:a,end:r,loop:o}],i,e);return Hi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,rnull===t||""===t;const Gi=!!Se&&{passive:!0};function Zi(t,e,i){t.canvas.removeEventListener(e,i,Gi)}function Ji(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Qi(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.addedNodes,s),e=e&&!Ji(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ts(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.removedNodes,s),e=e&&!Ji(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const es=new Map;let is=0;function ss(){const t=window.devicePixelRatio;t!==is&&(is=t,es.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ns(t,i,s){const n=t.canvas,o=n&&pe(n);if(!o)return;const a=e(((t,e)=>{const i=o.clientWidth;s(t,e),i{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||a(i,s)}));return r.observe(o),function(t,e){es.size||window.addEventListener("resize",ss),es.set(t,e)}(t,a),r}function os(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){es.delete(t),es.size||window.removeEventListener("resize",ss)}(t)}function as(t,i,s){const n=t.canvas,o=e((e=>{null!==t.ctx&&s(function(t,e){const i=qi[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Gi)}(n,i,o),o}class rs extends Ui{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Ki(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(Ki(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const s=i[t];$(s)?e.removeAttribute(t):e.setAttribute(t,s)}));const s=i.style||{};return Object.keys(s).forEach((t=>{e.style[t]=s[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:Qi,detach:ts,resize:ns}[e]||as;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:os,detach:os,resize:os}[e]||Zi)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=pe(t);return!(!e||!e.isConnected)}}function ls(t){return!ge()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Xi:rs}var hs=Object.freeze({__proto__:null,_detectPlatform:ls,BasePlatform:Ui,BasicPlatform:Xi,DomPlatform:rs});const cs="transparent",ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=W(t||cs),n=s.valid&&W(e||cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class us{constructor(t,e,i,s){const n=e[i];s=je([t.to,s,n,t.from]);const o=je([t.from,n,s]);this._active=!0,this._fn=t.fn||ds[t.type||typeof o],this._easing=Ci[t.easing]||Ci.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=je([t.to,e,s,t.from]),this._from=je([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),bt.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),bt.describe("animations",{_fallback:"animation"}),bt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class gs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const s=t[i];if(!U(s))return;const n={};for(const t of fs)n[t]=s[t];(Y(s.properties)&&s.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,n)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new us(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function ps(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ms(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ms(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const ks=t=>"reset"===t||"none"===t,Ss=(t,e)=>e?t:Object.assign({},t);class Ps{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=bs(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Ms(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=K(i.xAxisID,ws(t,"x")),o=e.yAxisID=K(i.yAxisID,ws(t,"y")),a=e.rAxisID=K(i.rAxisID,ws(t,"r")),r=e.indexAxis,l=e.iAxisID=s(r,n,o,a),h=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ue(this._data,this),t._stacked&&Ms(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(U(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,h=s;else{h=Y(s[t])?this.parseArrayData(i,s,t,e):U(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const n=()=>null===l[a]||d&&l[a]t&&!e.hidden&&e._stacked&&{keys:ms(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:c}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(a);let d,u;function f(){u=s[d];const e=u[a.axis];return!X(u[t.axis])||h>e||c=0;--d)if(!f()){this.updateRangeFromParsed(l,t,u,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ss(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new gs(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ks(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){ks(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!ks(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Ds.defaults={},Ds.defaultRoutes=void 0;const Cs={values:t=>Y(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=Dt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ri(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=t/Math.pow(10,Math.floor(Dt(t)));return 1===s||2===s||5===s?Cs.numeric.call(this,t,e,i):""}};var Os={formatters:Cs};function As(t,e){const i=t.options.ticks,s=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),n=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;is)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(n,e,s);if(o>0){let t,i;const s=o>1?Math.round((r-a)/(o-1)):null;for(Ts(e,l,h,$(s)?0:a-s,a),t=0,i=o-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Os.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),bt.route("scale.ticks","color","","color"),bt.route("scale.grid","color","","borderColor"),bt.route("scale.grid","borderColor","","borderColor"),bt.route("scale.title","color","","color"),bt.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),bt.describe("scales",{_fallback:"scale"}),bt.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t});const Ls=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Rs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Is(t){return t.drawTicks?t.tickLength:0}function zs(t,e){if(!t.display)return 0;const i=He(t.font,e),s=Ne(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+s.height}function Fs(t,e,i){let n=s(t);return(i&&"right"!==e||!i&&"right"===e)&&(n=(t=>"left"===t?"right":"right"===t?"left":t)(n)),n}class Bs extends Ds{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,s),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:q(i,q(s,i)),max:q(s,q(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){J(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=$e(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=jt(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Is(t.grid)-e.padding-zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=zt(Math.min(Math.asin(jt((h.highest.height+6)/o,-1,1)),Math.asin(jt(a/r,-1,1))-Math.asin(jt(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){J(this.options.afterCalculateLabelRotation,[this])}beforeFit(){J(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Is(n)+o):(t.height=this.maxHeight,t.width=Is(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=It(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){J(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:n[t]||0,height:o[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return $t(this._alignToPixels?Kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:o}=s,a=n.offset,r=this.isHorizontal(),l=this.ticks.length+(a?1:0),h=Is(n),c=[],d=n.setContext(this.getContext()),u=d.drawBorder?d.borderWidth:0,f=u/2,g=function(t){return Kt(i,t,u)};let p,m,x,b,_,y,v,w,M,k,S,P;if("top"===o)p=g(this.bottom),y=this.bottom-h,w=p-f,k=g(t.top)+f,P=t.bottom;else if("bottom"===o)p=g(this.top),k=t.top,P=g(t.bottom)-f,y=p+f,w=this.top+h;else if("left"===o)p=g(this.right),_=this.right-h,v=p-f,M=g(t.left)+f,S=t.right;else if("right"===o)p=g(this.left),M=t.left,S=g(t.right)-f,_=p+f,v=this.left+h;else if("x"===e){if("center"===o)p=g((t.top+t.bottom)/2+.5);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}k=t.top,P=t.bottom,y=p+f,w=y+h}else if("y"===e){if("center"===o)p=g((t.left+t.right)/2);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}_=p-f,v=_-h,M=t.left,S=t.right}const D=K(s.ticks.maxTicksLimit,l),C=Math.max(1,Math.ceil(l/D));for(m=0;me.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");bt.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&bt.describe(e,t.descriptors)}(t,o,i),this.override&&bt.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in bt[s]&&(delete bt[s][i],this.override&&delete gt[i])}}var Ws=new class{constructor(){this.controllers=new Vs(Ps,"datasets",!0),this.elements=new Vs(Ds,"elements"),this.plugins=new Vs(Object,"plugins"),this.scales=new Vs(Bs,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):Q(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=ht(t);J(i["before"+s],[],i),e[t](i),J(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function Hs(t,e){return e||!1!==t?!0===t?{}:t:null}function js(t,e,i,s){const n=t.pluginScopeKeys(e),o=t.getOptionScopes(i,n);return t.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function $s(t,e){const i=bt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ys(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function Us(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=gt[t.type]||{scales:{}},s=e.scales||{},n=$s(t.type,e),o=Object.create(null),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!U(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=Ys(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};o[r]=o[r]||t,a[t]=ot(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||$s(n,e),l=(gt[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||o[e]||e;a[n]=a[n]||Object.create(null),ot(a[n],[{axis:e},s[n],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];ot(e,[bt.scales[e.type],bt.scale])})),a}(t,e)}function Xs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const qs=new Map,Ks=new Set;function Gs(t,e){let i=qs.get(t);return i||(i=e(),qs.set(t,i),Ks.add(i)),i}const Zs=(t,e,i)=>{const s=lt(e,i);void 0!==s&&t.add(s)};class Js{constructor(t){this._config=function(t){return(t=t||{}).data=Xs(t.data),Us(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Xs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gs(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Gs(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Gs(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Gs(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Zs(r,t,e)))),e.forEach((t=>Zs(r,s,t))),e.forEach((t=>Zs(r,gt[n]||{},t))),e.forEach((t=>Zs(r,bt,t))),e.forEach((t=>Zs(r,pt,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Ks.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,gt[e]||{},bt.datasets[e]||{},{type:e},bt,pt]}resolveNamedOptions(t,e,i,s=[""]){const n={$shared:!0},{resolver:o,subPrefixes:a}=Qs(this._resolverCache,t,s);let r=o;if(function(t,e){const{isScriptable:i,isIndexable:s}=ri(t);for(const n of e){const e=i(n),o=s(n),a=(o||e)&&t[n];if(e&&(dt(a)||tn(a))||o&&Y(a))return!0}return!1}(o,e)){n.$shared=!1;r=ai(o,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)n[t]=r[t];return n}createResolver(t,e,i=[""],s){const{resolver:n}=Qs(this._resolverCache,t,i);return U(e)?ai(n,e,void 0,s):n}}function Qs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:oi(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const tn=t=>U(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||dt(t[i])),!1);const en=["top","bottom","left","right","chartArea"];function sn(t,e){return"top"===t||"bottom"===t||-1===en.indexOf(t)&&"x"===e}function nn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function on(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),J(i&&i.onComplete,[t],e)}function an(t){const e=t.chart,i=e.options.animation;J(i&&i.onProgress,[t],e)}function rn(t){return ge()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ln={},hn=t=>{const e=rn(t);return Object.values(ln).filter((t=>t.canvas===e)).pop()};function cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class dn{constructor(t,e){const s=this.config=new Js(e),n=rn(t),o=hn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas can be reused.");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ls(n)),this.platform.updateConfig(s);const l=this.platform.acquireContext(n,r.aspectRatio),h=l&&l.canvas,c=h&&h.height,d=h&&h.width;this.id=j(),this.ctx=l,this.canvas=h,this.width=d,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ns,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((t=>this.update(t)),r.resizeDelay||0),this._dataChanges=[],ln[this.id]=this,l&&h?(a.listen(this,"complete",on),a.listen(this,"progress",an),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:n}=this;return $(t)?e&&n?n:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),J(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){Q(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Ys(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),Q(n,(e=>{const n=e.options,o=n.id,a=Ys(o,n),r=K(n.type,e.dtype);void 0!==n.position&&sn(n.position,a)===sn(e.dposition)||(n.position=e.dposition),s[o]=!0;let l=null;if(o in i&&i[o].type===r)l=i[o];else{l=new(Ws.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),Q(s,((t,e)=>{t||delete i[e]})),Q(i,(t=>{ni.configure(this,t,t.options),ni.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(nn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Q(this.scales,(t=>{ni.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);ut(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ni.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Q(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Qt(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&te(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}getElementsAtEventForMode(t,e,i,s){const n=Ee.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ye(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);ct(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};Q(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){Q(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},Q(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!tt(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:Jt(t,this.chartArea,this._minPadding)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=ft(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,J(n.onHover,[t,a,this],this),r&&J(n.onClick,[t,a,this],this));const h=!tt(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const un=()=>Q(dn.instances,(t=>t._plugins.invalidate())),fn=!0;function gn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(dn,{defaults:{enumerable:fn,value:bt},instances:{enumerable:fn,value:ln},overrides:{enumerable:fn,value:gt},registry:{enumerable:fn,value:Ws},version:{enumerable:fn,value:"3.7.1"},getChart:{enumerable:fn,value:hn},register:{enumerable:fn,value:(...t)=>{Ws.add(...t),un()}},unregister:{enumerable:fn,value:(...t)=>{Ws.remove(...t),un()}}});class pn{constructor(t){this.options=t||{}}formats(){return gn()}parse(t,e){return gn()}format(t,e){return gn()}add(t,e,i){return gn()}diff(t,e,i){return gn()}startOf(t,e,i){return gn()}endOf(t,e){return gn()}}pn.override=function(t){Object.assign(pn.prototype,t)};var mn={_date:pn};function xn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(ct(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function _n(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base=i?1:-1)}(c,e,o)*n,d===o&&(p-=c/2),h=p+c),p===e.getPixelForValue(o)){const t=Ct(c)*e.getLineWidthForValue(o)/2;p+=t,c-=t}return{size:c,base:p,head:h,center:h+c/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,n=s.skipNull,o=K(s.maxBarThickness,1/0);let a,r;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===s.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:"("+o+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,r=this.resolveDataElementOptions(e,s),l=this.getSharedOptions(r),h=this.includeOptions(s,l),c=o.axis,d=a.axis;for(let r=e;r""}}}};class Dn extends Ps{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,o,a=t=>+i[t];if(U(i[t])){const{key:t="value"}=this._parsing;a=e=>+lt(i[e],t)}for(n=t,o=t+e;nHt(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Ht(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(kt,c,u),x=g(_t,h,d),b=g(_t+kt,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(c,h,r),p=(i.width-o)/d,m=(i.height-o)/u,x=Math.max(Math.min(p,m)/2,0),b=Z(this.options.radius,x),_=(b-Math.max(b*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=f*b,this.offsetY=g*b,s.total=this.calculateTotal(),this.outerRadius=b-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/yt)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,f=this.resolveDataElementOptions(e,s),g=this.getSharedOptions(f),p=this.includeOptions(s,g);let m,x=this._getRotation();for(m=0;m0&&!isNaN(t)?yt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s"spacing"!==t,_indexable:t=>"spacing"!==t},Dn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Cn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=function(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=jt(Math.min(re(r,a.axis,h).lo,i?s:re(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?jt(Math.max(re(r,a.axis,c).hi+1,i?0:re(e,l,a.getPixelForValue(c)).hi+1),n,s)-n:s-n}return{start:n,count:o}}(e,s,o);this._drawStart=a,this._drawCount=r,function(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a,_stacked:r,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(h),d=this.includeOptions(s,c),u=o.axis,f=a.axis,{spanGaps:g,segment:p}=this.options,m=Tt(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||n||"none"===s;let b=e>0&&this.getParsed(e-1);for(let h=e;h0&&i[u]-b[u]>m,p&&(g.parsed=i,g.raw=l.data[h]),d&&(g.options=c||this.resolveDataElementOptions(h,e.active?"active":s)),x||this.updateElement(e,h,g,s),b=i}this.updateSharedOptions(c,s,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Cn.id="line",Cn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},Cn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class On extends Ps{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=this.getDataset(),r=o.options.animation,l=this._cachedMeta.rScale,h=l.xCenter,c=l.yCenter,d=l.getIndexAngle(0)-.5*_t;let u,f=d;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(t.data[s])&&this.chart.getDataVisibility(s)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?It(this.resolveDataElementOptions(t,e).angle||i):0}}On.id="polarArea",On.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},On.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class An extends Dn{}An.id="pie",An.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Tn extends Ps{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this.getDataset(),o=this._cachedMeta.rScale,a="reset"===s;for(let r=e;r"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Rn=Object.freeze({__proto__:null,BarController:Sn,BubbleController:Pn,DoughnutController:Dn,LineController:Cn,PolarAreaController:On,PieController:An,RadarController:Tn,ScatterController:Ln});function En(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+kt,s-kt),t.closePath(),t.clip()}function In(t,e,i,s){const n=Be(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return jt(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:jt(n.innerStart,0,a),innerEnd:jt(n.innerEnd,0,a)}}function zn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Fn(t,e,i,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=e,c=Math.max(e.outerRadius+s+i-l,0),d=h>0?h+s+i+l:0;let u=0;const f=n-r;if(s){const t=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==t?f*t/(t+s):f))/2}const g=(f-Math.max(.001,f*c-i/_t)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=In(e,d,c,m-p),v=c-x,w=c-b,M=p+x/v,k=m-b/w,S=d+_,P=d+y,D=p+_/S,C=m-y/P;if(t.beginPath(),t.arc(o,a,c,M,k),b>0){const e=zn(w,k,o,a);t.arc(e.x,e.y,b,k,m+kt)}const O=zn(P,m,o,a);if(t.lineTo(O.x,O.y),y>0){const e=zn(P,C,o,a);t.arc(e.x,e.y,y,m+kt,C+Math.PI)}if(t.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const e=zn(S,D,o,a);t.arc(e.x,e.y,_,D+Math.PI,p-kt)}const A=zn(v,p,o,a);if(t.lineTo(A.x,A.y),x>0){const e=zn(v,M,o,a);t.arc(e.x,e.y,x,p-kt,M)}t.closePath()}function Bn(t,e,i,s,n){const{options:o}=e,{borderWidth:a,borderJoinStyle:r}=o,l="inner"===o.borderAlign;a&&(l?(t.lineWidth=2*a,t.lineJoin=r||"round"):(t.lineWidth=a,t.lineJoin=r||"bevel"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&En(t,e,o+yt),t.beginPath(),t.arc(s,n,h,o+yt,o,!0),c=0;c=yt||Ht(n,a,r),f=Yt(o,l+d,h+d);return u&&f}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>yt?Math.floor(i/yt):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=0;if(s){o=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*o,Math.sin(e)*o),this.circumference>=_t&&(o=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const a=function(t,e,i,s){const{fullCircles:n,startAngle:o,circumference:a}=e;let r=e.endAngle;if(n){Fn(t,e,i,s,o+yt);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function Yn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?$n:jn}Vn.id="arc",Vn.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},Vn.defaultRoutes={backgroundColor:"backgroundColor"};const Un="function"==typeof Path2D;function Xn(t,e,i,s){Un&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Wn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Yn(e);for(const r of n)Wn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class qn extends Ds{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;ki(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ni(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Wi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?Ai:t.tension||"monotone"===t.cubicInterpolationMode?Ti:Oi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t&&"fill"!==t};class Gn extends Ds{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){oo(t)}))}var ro={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ao(t);const s=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:o,indexAxis:a}=e,r=t.getDatasetMeta(n),l=o||e.data;if("y"===je([a,t.options.indexAxis]))return;if("line"!==r.type)return;const h=t.scales[r.xAxisID];if("linear"!==h.type&&"time"!==h.type)return;if(t.options.parsing)return;let{start:c,count:d}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=jt(re(e,o.axis,a).lo,0,i-1)),s=h?jt(re(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(r,l);if(d<=(i.threshold||4*s))return void oo(e);let u;switch($(o)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(l,c,d,s,i);break;case"min-max":u=function(t,e,i,s){let n,o,a,r,l,h,c,d,u,f,g=0,p=0;const m=[],x=e+i-1,b=t[e].x,_=t[x].x-b;for(n=e;nf&&(f=r,c=n),g=(p*g+o.x)/++p;else{const i=n-1;if(!$(h)&&!$(c)){const e=Math.min(h,c),s=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:g}),s!==d&&s!==i&&m.push({...t[s],x:g})}n>0&&i!==d&&m.push(t[i]),m.push(o),l=e,p=0,u=f=r,h=c=d=n}}return m}(l,c,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){ao(t)}};function lo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=K(i&&i.target,i);return void 0===s&&(s=!!e.backgroundColor),!1!==s&&null!==s&&(!0===s?"origin":s)}(t);if(U(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return X(n)&&Math.floor(n)===n?("-"!==s[0]&&"+"!==s[0]||(n=e+n),!(n===e||n<0||n>=i)&&n):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}class ho{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:yt},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function co(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,o=[],a=s.reverse?e.max:e.min,r=s.reverse?e.min:e.max;let l,h,c;if(c="start"===i?a:"end"===i?r:U(i)?i.value:e.getBaseValue(),s.grid.circular)return h=e.getPointPositionForValue(0,a),new ho({x:h.x,y:h.y,radius:e.getDistanceFromCenterForValue(c)});for(l=0;lt;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function fo(t,e,i){const s=[];for(let n=0;n{e=uo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new qn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function xo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!X(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function bo(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[uo(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function _o(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=Nt(n),o=Nt(o)),{property:t,start:n,end:o}}function yo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function vo(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function wo(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}function Mo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=uo(s,r,n);const l=_o(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Wi(e,l);for(const e of h){const s=_o(i,o[e.start],o[e.end],e.loop),r=Vi(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:yo(l,s,"start",Math.max)},end:{[i]:yo(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,vo(t,a,d&&_o(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():wo(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||wo(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ko(t,e,i){const s=po(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Qt(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(bo(t,s,a.top),Mo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),bo(t,s,a.bottom)),Mo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),te(t))}var So={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&ko(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;i&&ko(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;s&&!1!==s.fill&&"beforeDatasetDraw"===i.drawTime&&ko(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Po=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Do extends Ds{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=J(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=He(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Po(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:o}}=this,a=Ei(o,this.left,this.width);if(this.isHorizontal()){let o=0,r=n(i,this.left+s,this.right-this.lineWidths[o]);for(const l of e)o!==l.row&&(o=l.row,r=n(i,this.left+s,this.right-this.lineWidths[o])),l.top+=this.top+t+s,l.left=a.leftForLtr(a.x(r),l.width),r+=l.width+s}else{let o=0,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(const l of e)l.col!==o&&(o=l.col,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),l.top=r,l.left+=this.left+s,l.left=a.leftForLtr(a.x(l.left),l.width),r+=l.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Qt(t,this),this._draw(),te(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:a,labels:r}=t,l=bt.color,h=Ei(t.rtl,this.left,this.width),c=He(r.font),{color:d,padding:u}=r,f=c.size,g=f/2;let p;this.drawTitle(),s.textAlign=h.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:m,boxHeight:x,itemHeight:b}=Po(r,f),_=this.isHorizontal(),y=this._computeTitleHeight();p=_?{x:n(a,this.left+u,this.right-i[0]),y:this.top+u+y,line:0}:{x:this.left+u,y:n(a,this.top+y+u,this.bottom-e[0].height),line:0},Ii(this.ctx,t.textDirection);const v=b+u;this.legendItems.forEach(((w,M)=>{s.strokeStyle=w.fontColor||d,s.fillStyle=w.fontColor||d;const k=s.measureText(w.text).width,S=h.textAlign(w.textAlign||(w.textAlign=r.textAlign)),P=m+g+k;let D=p.x,C=p.y;h.setWidth(this.width),_?M>0&&D+P+u>this.right&&(C=p.y+=v,p.line++,D=p.x=n(a,this.left+u,this.right-i[p.line])):M>0&&C+v>this.bottom&&(D=p.x=D+e[p.line].width+u,p.line++,C=p.y=n(a,this.top+y+u,this.bottom-e[p.line].height));!function(t,e,i){if(isNaN(m)||m<=0||isNaN(x)||x<0)return;s.save();const n=K(i.lineWidth,1);if(s.fillStyle=K(i.fillStyle,l),s.lineCap=K(i.lineCap,"butt"),s.lineDashOffset=K(i.lineDashOffset,0),s.lineJoin=K(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=K(i.strokeStyle,l),s.setLineDash(K(i.lineDash,[])),r.usePointStyle){const o={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},a=h.xPlus(t,m/2);Zt(s,o,a,e+g)}else{const o=e+Math.max((f-x)/2,0),a=h.leftForLtr(t,m),r=We(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?oe(s,{x:a,y:o,w:m,h:x,radius:r}):s.rect(a,o,m,x),s.fill(),0!==n&&s.stroke()}s.restore()}(h.x(D),C,w),D=o(S,D+m+g,_?D+P:this.right,t.rtl),function(t,e,i){se(s,i.text,t,e+b/2,c,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})}(h.x(D),C,w),_?p.x+=P+u:p.y+=v})),zi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=He(e.font),o=Ne(e.padding);if(!e.display)return;const a=Ei(t.rtl,this.left,this.width),r=this.ctx,l=e.position,h=i.size/2,c=o.top+h;let d,u=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),d=this.top+c,u=n(t.align,u,this.right-f);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=c+n(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const g=n(l,u,u+f);r.textAlign=a.textAlign(s(l)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=i.string,se(r,e.text,g,d,i)}_computeTitleHeight(){const t=this.options.title,e=He(t.font),i=Ne(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Yt(t,this.left,this.right)&&Yt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=Ne(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Oo extends Ds{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=Y(i.text)?i.text.length:1;this._padding=Ne(i.padding);const n=s*He(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=n(r,i,o),c=e+t,l=o-i):("left"===a.position?(h=i+t,c=n(r,s,e),d=-.5*_t):(h=o-t,c=n(r,e,s),d=.5*_t),l=s-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=He(e.font),n=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);se(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:l,textAlign:s(e.align),textBaseline:"middle",translation:[o,a]})}}var Ao={id:"title",_element:Oo,start(t,e,i){!function(t,e){const i=new Oo({ctx:t.ctx,options:e,chart:t});ni.configure(t,i,e),ni.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ni.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const To=new WeakMap;var Lo={id:"subtitle",start(t,e,i){const s=new Oo({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s),To.set(t,s)},stop(t){ni.removeBox(t,To.get(t)),To.delete(t)},beforeUpdate(t,e,i){const s=To.get(t);ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ro={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function zo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Fo(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=He(e.bodyFont),h=He(e.titleFont),c=He(e.footerFont),d=o.length,u=n.length,f=s.length,g=Ne(e.padding);let p=g.height,m=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=h.string,Q(t.title,_),i.font=l.string,Q(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2+e.boxPadding:0,Q(s,(t=>{Q(t.before,_),Q(t.lines,_),Q(t.after,_)})),b=0,i.font=c.string,Q(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function Bo(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Vo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Bo(t,e,i,s),yAlign:s}}function Wo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:jt(g,0,s.width-e.width),y:jt(p,0,s.height-e.height)}}function No(t,e,i){const s=Ne(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ho(t){return Eo([],Io(t))}function jo(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class $o extends Ds{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new gs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ye(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}getBeforeBody(t,e){return Ho(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return Q(t,(t=>{const e={before:[],lines:[],after:[]},n=jo(i,t);Eo(e.before,Io(n.beforeLabel.call(this,t))),Eo(e.lines,n.label.call(this,t)),Eo(e.after,Io(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return Ho(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),Q(l,(e=>{const i=jo(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Ro[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Fo(this,i),a=Object.assign({},t,e),r=Vo(this.chart,i,a),l=Wo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=We(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=He(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,oe(t,{x:e,y:g,w:l,h:r,radius:a}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),oe(t,{x:i,y:g+1,w:l-2,h:r-2,radius:a}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=o.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=He(i.bodyFont);let d=c.lineHeight,u=0;const f=Ei(i.rtl,this.x,this.width),g=function(i){e.fillText(i,f.x(t.x+u),t.y+d/2),t.y+=d+n},p=f.textAlign(o);let m,x,b,_,y,v,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=No(this,p,i),e.fillStyle=i.bodyColor,Q(this.beforeBody,g),u=a&&"right"!==p?"center"===o?l/2+h:l+2+h:0,_=0,v=s.length;_0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Ro[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Fo(this,t),a=Object.assign({},i,this._size),r=Vo(e,t,a),l=Wo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ne(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ii(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),zi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!tt(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!tt(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Ro[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}$o.positioners=Ro;var Yo={id:"tooltip",_element:$o,positioners:Ro,afterInit(t,e,i){i&&(t.tooltip=new $o({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins("beforeTooltipDraw",i)&&(e&&e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:H,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Uo=Object.freeze({__proto__:null,Decimation:ro,Filler:So,Legend:Co,SubTitle:Lo,Title:Ao,Tooltip:Yo});function Xo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class qo extends Bs{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:jt(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Xo(i,t,K(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Ko(t,e,{horizontal:i,minRotation:s}){const n=It(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}qo.id="category",qo.defaults={ticks:{callback:qo.prototype.getLabelForValue}};class Go extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=Ct(s),e=Ct(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function(t,e){const i=[],{bounds:s,step:n,min:o,max:a,precision:r,count:l,maxTicks:h,maxDigits:c,includeBounds:d}=t,u=n||1,f=h-1,{min:g,max:p}=e,m=!$(o),x=!$(a),b=!$(l),_=(p-g)/(c+1);let y,v,w,M,k=Ot((p-g)/f/u)*u;if(k<1e-14&&!m&&!x)return[{value:g},{value:p}];M=Math.ceil(p/k)-Math.floor(g/k),M>f&&(k=Ot(M*k/f/u)*u),$(r)||(y=Math.pow(10,r),k=Math.ceil(k*y)/y),"ticks"===s?(v=Math.floor(g/k)*k,w=Math.ceil(p/k)*k):(v=g,w=p),m&&x&&n&&Rt((a-o)/n,k/1e3)?(M=Math.round(Math.min((a-o)/k,h)),k=(a-o)/M,v=o,w=a):b?(v=m?o:v,w=x?a:w,M=l-1,k=(w-v)/M):(M=(w-v)/k,M=Lt(M,Math.round(M),k/1e3)?Math.round(M):Math.ceil(M));const S=Math.max(Ft(k),Ft(v));y=Math.pow(10,$(r)?S:r),v=Math.round(v*y)/y,w=Math.round(w*y)/y;let P=0;for(m&&(d&&v!==o?(i.push({value:o}),v0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?Math.max(0,t):null,this.max=X(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(Dt(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(Dt(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=q(t.min,Math.pow(10,Math.floor(Dt(e.min)))),a=Math.floor(Dt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{n.push({value:o,major:Jo(o)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l}while(an?{start:e-i,end:e}:{start:e,end:e+i}}function ia(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],n=[],o=t._pointLabels.length,a=t.options.pointLabels,r=a.centerPointLabels?_t/o:0;for(let d=0;de.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function na(t){return 0===t||180===t?"center":t<180?"left":"right"}function oa(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function aa(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function ra(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yt);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=J(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?ia(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return Nt(t*(yt/(this._pointLabels.length||1))+It(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if($(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if($(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=s.setContext(t.getPointLabelContext(n)),o=He(e.font),{x:a,y:r,textAlign:l,left:h,top:c,right:d,bottom:u}=t._pointLabelItems[n],{backdropColor:f}=e;if(!$(f)){const t=Ne(e.backdropPadding);i.fillStyle=f,i.fillRect(h-t.left,c-t.top,d-h+t.width,u-c+t.height)}se(i,t._pointLabels[n],a,r+o.lineHeight/2,o,{color:e.color,textAlign:l,textBaseline:"middle"})}}(this,n),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){a=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),ra(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,s.setContext(this.getContext(e-1)),a,n)}})),i.display){for(t.save(),o=n-1;o>=0;o--){const s=i.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:l}=s;l&&n&&(t.lineWidth=l,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),r=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(r.x,r.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=He(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Ne(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}se(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}la.id="radialLinear",la.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Os.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},la.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},la.descriptors={angleLines:{_fallback:"grid"}};const ha={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ca=Object.keys(ha);function da(t,e){return t-e}function ua(t,e){if($(e))return null;const i=t._adapter,{parser:s,round:n,isoWeekday:o}=t._parseOpts;let a=e;return"function"==typeof s&&(a=s(a)),X(a)||(a="string"==typeof s?i.parse(a,s):i.parse(a)),null===a?null:(n&&(a="week"!==n||!Tt(o)&&!0!==o?i.startOf(a,n):i.startOf(a,"isoWeek",o)),+a)}function fa(t,e,i,s){const n=ca.length;for(let o=ca.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function pa(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class ma extends Bs{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new mn._date(t.adapters.date);ot(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:ua(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();function r(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),a||isNaN(t.max)||(n=Math.max(n,t.max))}o&&a||(r(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||r(this.getMinMax(!1))),s=X(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=X(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=he(s,n,this.max);return this._unit=e.unit||(i.autoSkip?fa(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ca.length-1;o>=ca.indexOf(i);o--){const i=ca[o];if(ha[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ca[i?ca.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=ca.indexOf(t)+1,i=ca.length;e1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const f="data"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;ct-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],c=i[e],d=r&&h&&c&&c.major,u=this._adapter.format(t,s||(d?h:l)),f=n.ticks.callback;return f?J(f,[u,e,i],this):u}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=re(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=re(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}ma.id="time",ma.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ba extends ma{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=xa(e,this.min),this._tableRange=xa(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;oArray.prototype.slice.call(t));let s=!1,a=[];return function(...n){a=o(n),s||(s=!0,t.call(window,(()=>{s=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(){return e?(clearTimeout(i),i=setTimeout(t,e)):t(),e}}const n=t=>"start"===t?"left":"end"===t?"right":"center",o=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,s=(t,e,i)=>"right"===t?i:"center"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,n){const o=e.listeners[n],s=e.duration;o.forEach((n=>n({chart:t,numSteps:s,currentStep:Math.min(i-e.start,s)})))}_refresh(){const e=this;e._request||(e._running=!0,e._request=t.call(window,(()=>{e._update(),e._request=null,e._running&&e._refresh()})))}_update(t=Date.now()){const e=this;let i=0;e._charts.forEach(((n,o)=>{if(!n.running||!n.items.length)return;const s=n.items;let a,r=s.length-1,l=!1;for(;r>=0;--r)a=s[r],a._active?(a._total>n.duration&&(n.duration=a._total),a.tick(t),l=!0):(s[r]=s[s.length-1],s.pop());l&&(o.draw(),e._notify(o,n,t,"progress")),s.length||(n.running=!1,e._notify(o,n,t,"complete")),i+=s.length})),e._lastDate=t,0===i&&(e._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let n=i.length-1;for(;n>=0;--n)i[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; -/*! - * @kurkle/color v0.1.9 - * https://github.com/kurkle/color#readme - * (c) 2020 Jukka Kurkela - * Released under the MIT License - */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l="0123456789ABCDEF",c=t=>l[15&t],h=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?c:h;return t?"#"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):""):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const y=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function v(t,e,i){const n=e*Math.min(i,1-i),o=(e,o=(e+t/30)%12)=>i-n*Math.max(Math.min(o-3,9-o,1),-1);return[o(0),o(8),o(4)]}function M(t,e,i){const n=(n,o=(n+t/60)%6)=>i-i*e*Math.max(Math.min(o,4-o,1),0);return[n(5),n(3),n(1)]}function w(t,e,i){const n=v(t,1,.5);let o;for(e+i>1&&(o=1/(e+i),e*=o,i*=o),o=0;o<3;o++)n[o]*=1-e-i,n[o]+=e;return n}function k(t){const e=t.r/255,i=t.g/255,n=t.b/255,o=Math.max(e,i,n),s=Math.min(e,i,n),a=(o+s)/2;let r,l,c;return o!==s&&(c=o-s,l=a>.5?c/(2-o-s):c/(o+s),r=o===e?(i-n)/c+(i>16&255,s>>8&255,255&s]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let n=k(t);n[e]=Math.max(0,Math.min(n[e]+n[e]*i,0===e?360:1)),n=P(n),t.r=n[0],t.g=n[1],t.b=n[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function F(t){return"r"===t.charAt(0)?function(t){const e=_.exec(t);let i,n,o,s=255;if(e){if(e[7]!==i){const t=+e[7];s=255&(e[8]?p(t):255*t)}return i=+e[1],n=+e[3],o=+e[5],i=255&(e[2]?p(i):i),n=255&(e[4]?p(n):n),o=255&(e[6]?p(o):o),{r:i,g:n,b:o,a:s}}}(t):C(t)}class z{constructor(t){if(t instanceof z)return t;const e=typeof t;let i;var n,o,s;"object"===e?i=I(t):"string"===e&&(s=(n=t).length,"#"===n[0]&&(4===s||5===s?o={r:255&17*r[n[1]],g:255&17*r[n[2]],b:255&17*r[n[3]],a:5===s?17*r[n[4]]:255}:7!==s&&9!==s||(o={r:r[n[1]]<<4|r[n[2]],g:r[n[3]]<<4|r[n[4]],b:r[n[5]]<<4|r[n[6]],a:9===s?r[n[7]]<<4|r[n[8]]:255})),i=o||L(t)||F(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],n=b(e[1]),o=b(e[2]);return t.a<255?`hsla(${i}, ${n}%, ${o}%, ${x(t.a)})`:`hsl(${i}, ${n}%, ${o}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const n=i.rgb,o=t.rgb;let s;const a=e===s?.5:e,r=2*a-1,l=n.a-o.a,c=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;s=1-c,n.r=255&c*n.r+s*o.r+.5,n.g=255&c*n.g+s*o.g+.5,n.b=255&c*n.b+s*o.b+.5,n.a=a*n.a+(1-a)*o.a,i.rgb=n}return i}clone(){return new z(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function V(t){return new z(t)}const B=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return B(t)?t:V(t)}function H(t){return B(t)?t:V(t).saturate(.5).darken(.1).hexString()}function N(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)}function U(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const X=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,Z=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function Q(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function J(t,e,i,n){let o,s,a;if(Y(t))if(s=t.length,n)for(o=s-1;o>=0;o--)e.call(i,t[o],o);else for(o=0;oi;)t=t[e.substr(i,n-i)],i=n+1,n=rt(e,i);return t}function ct(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ht=t=>void 0!==t,dt=t=>"function"==typeof t,ut=Object.create(null),ft=Object.create(null);function gt(t,e){if(!e)return t;const i=e.split(".");for(let e=0,n=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>H(e.backgroundColor),this.hoverBorderColor=(t,e)=>H(e.borderColor),this.hoverColor=(t,e)=>H(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.describe(t)}set(t,e){return pt(this,t,e)}get(t){return gt(this,t)}describe(t,e){return pt(ft,t,e)}override(t,e){return pt(ut,t,e)}route(t,e,i,n){const o=gt(this,t),s=gt(this,i),a="_"+e;Object.defineProperties(o,{[a]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=s[n];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const xt=Math.PI,bt=2*xt,_t=bt+xt,yt=Number.POSITIVE_INFINITY,vt=xt/180,Mt=xt/2,wt=xt/4,kt=2*xt/3,St=Math.log10,Pt=Math.sign;function Dt(t){const e=Math.pow(10,Math.floor(St(t))),i=t/e;return(i<=1?1:i<=2?2:i<=5?5:10)*e}function Ct(t){const e=[],i=Math.sqrt(t);let n;for(n=1;nt-e)).pop(),e}function At(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Ot(t,e,i){return Math.abs(t-e)=t}function Lt(t,e,i){let n,o,s;for(n=0,o=t.length;nr&&ln&&(n=s),n}function Yt(t,e,i,n){let o=(n=n||{}).data=n.data||{},s=n.garbageCollect=n.garbageCollect||[];n.font!==e&&(o=n.data={},s=n.garbageCollect=[],n.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,c,h,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Kt(t,e,i){return i=i||.5,t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==s.strokeColor;let l,c;for(t.save(),s.translation&&t.translate(s.translation[0],s.translation[1]),$(s.rotation)||t.rotate(s.rotation),t.font=o.string,s.color&&(t.fillStyle=s.color),s.textAlign&&(t.textAlign=s.textAlign),s.textBaseline&&(t.textBaseline=s.textBaseline),l=0;lt[i]1;)n=s+o>>1,i(n)?s=n:o=n;return{lo:s,hi:o}}const ie=(t,e,i)=>ee(t,i,(n=>t[n][e]ee(t,i,(n=>t[n][e]>=i));function oe(t,e,i){let n=0,o=t.length;for(;nn&&t[o-1]>i;)o--;return n>0||o{const i="_onData"+ct(e),n=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const o=n.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),o}})})))}function re(t,e){const i=t._chartjs;if(!i)return;const n=i.listeners,o=n.indexOf(e);-1!==o&&n.splice(o,1),n.length>0||(se.forEach((e=>{delete t[e]})),delete t._chartjs)}function le(t){const e=new Set;let i,n;for(i=0,n=t.length;i{o.push(t)})),o}function ce(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function he(t,e,i){let n;return"string"==typeof t?(n=parseInt(t,10),-1!==t.indexOf("%")&&(n=n/100*e.parentNode[i])):n=t,n}const de=t=>window.getComputedStyle(t,null);function ue(t,e){return de(t).getPropertyValue(e)}const fe=["top","right","bottom","left"];function ge(t,e,i){const n={};i=i?"-"+i:"";for(let o=0;o<4;o++){const s=fe[o];n[s]=parseFloat(t[e+"-"+s+i])||0}return n.width=n.left+n.right,n.height=n.top+n.bottom,n}function pe(t,e){const{canvas:i,currentDevicePixelRatio:n}=e,o=de(i),s="border-box"===o.boxSizing,a=ge(o,"padding"),r=ge(o,"border","width"),{x:l,y:c,box:h}=function(t,e){const i=t.native||t,n=i.touches,o=n&&n.length?n[0]:i,{offsetX:s,offsetY:a}=o;let r,l,c=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(s,a,i.target))r=s,l=a;else{const t=e.getBoundingClientRect();r=o.clientX-t.left,l=o.clientY-t.top,c=!0}return{x:r,y:l,box:c}}(t,i),d=a.left+(h&&r.left),u=a.top+(h&&r.top);let{width:f,height:g}=e;return s&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/n),y:Math.round((c-u)/g*i.height/n)}}const me=t=>Math.round(10*t)/10;function xe(t,e,i,n){const o=de(t),s=ge(o,"margin"),a=he(o.maxWidth,t,"clientWidth")||yt,r=he(o.maxHeight,t,"clientHeight")||yt,l=function(t,e,i){let n,o;if(void 0===e||void 0===i){const s=ce(t);if(s){const t=s.getBoundingClientRect(),a=de(s),r=ge(a,"border","width"),l=ge(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,n=he(a.maxWidth,s,"clientWidth"),o=he(a.maxHeight,s,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:n||yt,maxHeight:o||yt}}(t,e,i);let{width:c,height:h}=l;if("content-box"===o.boxSizing){const t=ge(o,"border","width"),e=ge(o,"padding");c-=e.width+t.width,h-=e.height+t.height}return c=Math.max(0,c-s.width),h=Math.max(0,n?Math.floor(c/n):h-s.height),c=me(Math.min(c,a,l.maxWidth)),h=me(Math.min(h,r,l.maxHeight)),c&&!h&&(h=me(c/2)),{width:c,height:h}}function be(t,e,i){const n=t.currentDevicePixelRatio=e||1,{canvas:o,width:s,height:a}=t;o.height=a*n,o.width=s*n,t.ctx.setTransform(n,0,0,n,0,0),o.style&&(i||!o.style.height&&!o.style.width)&&(o.style.height=a+"px",o.style.width=s+"px")}const _e=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function ye(t,e){const i=ue(t,e),n=i&&i.match(/^(\d+)(\.\d+)?px$/);return n?+n[1]:void 0}function ve(t,e){return"native"in t?{x:t.x,y:t.y}:pe(t,e)}function Me(t,e,i,n){const{controller:o,data:s,_sorted:a}=t,r=o._cachedMeta.iScale;if(r&&e===r.axis&&a&&s.length){const t=r._reversePixels?ne:ie;if(!n)return t(s,e,i);if(o._sharedOptions){const n=s[0],o="function"==typeof n.getRange&&n.getRange(e);if(o){const n=t(s,e,i-o),a=t(s,e,i+o);return{lo:n.lo,hi:a.hi}}}}return{lo:0,hi:s.length-1}}function we(t,e,i,n,o){const s=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=s.length;t{t[r](o[a],n)&&s.push({element:t,datasetIndex:e,index:i}),t.inRange(o.x,o.y,n)&&(l=!0)})),i.intersect&&!l?[]:s}var De={modes:{index(t,e,i,n){const o=ve(e,t),s=i.axis||"x",a=i.intersect?ke(t,o,s,n):Se(t,o,s,!1,n),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,n){const o=ve(e,t),s=i.axis||"xy";let a=i.intersect?ke(t,o,s,n):Se(t,o,s,!1,n);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tke(t,ve(e,t),i.axis||"xy",n),nearest:(t,e,i,n)=>Se(t,ve(e,t),i.axis||"xy",i.intersect,n),x:(t,e,i,n)=>(i.axis="x",Pe(t,e,i,n)),y:(t,e,i,n)=>(i.axis="y",Pe(t,e,i,n))}};const Ce=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);function Ae(t,e){const i=(""+t).match(Ce);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function Oe(t,e){const i={},n=U(e),o=n?Object.keys(e):e,s=U(t)?n?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of o)i[t]=+s(t)||0;return i}function Te(t){return Oe(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Le(t){return Oe(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Re(t){const e=Te(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Ee(t,e){t=t||{},e=e||mt.font;let i=K(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));const n={family:K(t.family,e.family),lineHeight:Ae(K(t.lineHeight,e.lineHeight),i),size:i,style:K(t.style,e.style),weight:K(t.weight,e.weight),string:""};return n.string=jt(n),n}function Ie(t,e,i,n){let o,s,a,r=!0;for(o=0,s=t.length;ot.pos===e))}function Be(t,e){return t.filter((t=>-1===ze.indexOf(t.pos)&&t.box.axis===e))}function We(t,e){return t.sort(((t,i)=>{const n=e?i:t,o=e?t:i;return n.weight===o.weight?n.index-o.index:n.weight-o.weight}))}function He(t,e,i,n){return Math.max(t[i],e[i])+Math.max(t[n],e[n])}function Ne(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function je(t,e,i){const n=i.box,o=t.maxPadding;if(U(i.pos))return{same:!1,other:!1};i.size&&(t[i.pos]-=i.size),i.size=i.horizontal?n.height:n.width,t[i.pos]+=i.size,n.getPadding&&Ne(o,n.getPadding());const s=Math.max(0,e.outerWidth-He(o,t,"left","right")),a=Math.max(0,e.outerHeight-He(o,t,"top","bottom")),r=s!==t.w,l=a!==t.h;return t.w=s,t.h=a,i.horizontal?{same:r,other:l}:{same:l,other:r}}function $e(t,e){const i=e.maxPadding;function n(t){const n={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{n[t]=Math.max(e[t],i[t])})),n}return n(t?["left","right"]:["top","bottom"])}function Ye(t,e,i){const n=[];let o,s,a,r,l,c;for(o=0,s=t.length,l=0;ot.box.fullSize)),!0),n=We(Ve(e,"left"),!0),o=We(Ve(e,"right")),s=We(Ve(e,"top"),!0),a=We(Ve(e,"bottom")),r=Be(e,"x"),l=Be(e,"y");return{fullSize:i,leftAndTop:n.concat(s),rightAndBottom:o.concat(l).concat(a).concat(r),chartArea:Ve(e,"chartArea"),vertical:n.concat(o).concat(l),horizontal:s.concat(a).concat(r)}}(t.boxes),l=r.vertical,c=r.horizontal;J(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const h=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:o,availableWidth:s,availableHeight:a,vBoxMaxWidth:s/2/h,hBoxMaxHeight:a/2}),u=Object.assign({},o);Ne(u,Re(n));const f=Object.assign({maxPadding:u,w:s,h:a,x:o.left,y:o.top},o);!function(t,e){let i,n,o;for(i=0,n=t.length;i{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h)}))}};class qe{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,n){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,n?Math.floor(e/n):i)}}isAttached(t){return!0}}class Ke extends qe{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}}const Ge={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Ze=t=>null===t||""===t;const Qe=!!_e&&{passive:!0};function Je(t,e,i){t.canvas.removeEventListener(e,i,Qe)}function ti(t,e,i){const n=t.canvas,o=n&&ce(n)||n,s=new MutationObserver((t=>{const e=ce(o);t.forEach((t=>{for(let n=0;n{t.forEach((t=>{for(let e=0;e{i.currentDevicePixelRatio!==t&&e()})))}function si(t,i,n){const o=t.canvas,s=o&&ce(o);if(!s)return;const a=e(((t,e)=>{const i=s.clientWidth;n(t,e),i{const e=t[0],i=e.contentRect.width,n=e.contentRect.height;0===i&&0===n||a(i,n)}));return r.observe(s),function(t,e){ii.size||window.addEventListener("resize",oi),ii.set(t,e)}(t,a),r}function ai(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){ii.delete(t),ii.size||window.removeEventListener("resize",oi)}(t)}function ri(t,i,n){const o=t.canvas,s=e((e=>{null!==t.ctx&&n(function(t,e){const i=Ge[t.type]||t.type,{x:n,y:o}=pe(t,e);return{type:i,chart:e,native:t,x:void 0!==n?n:null,y:void 0!==o?o:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Qe)}(o,i,s),s}class li extends qe{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,n=t.getAttribute("height"),o=t.getAttribute("width");if(t.$chartjs={initial:{height:n,width:o,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Ze(o)){const e=ye(t,"width");void 0!==e&&(t.width=e)}if(Ze(n))if(""===t.style.height)t.height=t.width/(e||2);else{const e=ye(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const n=i[t];$(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const n=t.$proxies||(t.$proxies={}),o={attach:ti,detach:ei,resize:si}[e]||ri;n[e]=o(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),n=i[e];if(!n)return;({attach:ai,detach:ai,resize:ai}[e]||Je)(t,e,n),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,n){return xe(t,e,i,n)}isAttached(t){const e=ce(t);return!(!e||!ce(e))}}var ci=Object.freeze({__proto__:null,BasePlatform:qe,BasicPlatform:Ke,DomPlatform:li});const hi=t=>0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*bt/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*bt/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*Mt),easeOutSine:t=>Math.sin(t*Mt),easeInOutSine:t=>-.5*(Math.cos(xt*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>hi(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>hi(t)?t:di(t,.075,.3),easeOutElastic:t=>hi(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return hi(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5},gi="transparent",pi={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const n=W(t||gi),o=n.valid&&W(e||gi);return o&&o.valid?o.mix(n,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class mi{constructor(t,e,i,n){const o=e[i];n=Ie([t.to,n,o,t.from]);const s=Ie([t.from,o,n]);this._active=!0,this._fn=t.fn||pi[t.type||typeof s],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=s,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,i){const n=this;if(n._active){n._notify(!1);const o=n._target[n._prop],s=i-n._start,a=n._duration-s;n._start=i,n._duration=Math.floor(Math.max(a,t.duration)),n._total+=s,n._loop=!!t.loop,n._to=Ie([t.to,e,o,t.from]),n._from=Ie([t.from,o,e])}}cancel(){const t=this;t._active&&(t.tick(Date.now()),t._active=!1,t._notify(!1))}tick(t){const e=this,i=t-e._start,n=e._duration,o=e._prop,s=e._from,a=e._loop,r=e._to;let l;if(e._active=s!==r&&(a||i1?2-l:l,l=e._easing(Math.min(1,Math.max(0,l))),e._target[o]=e._fn(s,r,l))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),mt.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),mt.describe("animations",{_fallback:"animation"}),mt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class bi{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const n=t[i];if(!U(n))return;const o={};for(const t of xi)o[t]=n[t];(Y(n.properties)&&n.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,o)}))}))}_animateOptions(t,e){const i=e.options,n=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!n)return[];const o=this._createAnimations(n,i);return i.$shared&&function(t,e){const i=[],n=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),o}_createAnimations(t,e){const i=this._properties,n=[],o=t.$animations||(t.$animations={}),s=Object.keys(e),a=Date.now();let r;for(r=s.length-1;r>=0;--r){const l=s[r];if("$"===l.charAt(0))continue;if("options"===l){n.push(...this._animateOptions(t,e));continue}const c=e[l];let h=o[l];const d=i.get(l);if(h){if(d&&h.active()){h.update(d,c,a);continue}h.cancel()}d&&d.duration?(o[l]=h=new mi(d,t,l,c),n.push(h)):t[l]=c}return n}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function _i(t,e){const i=t&&t.options||{},n=i.reverse,o=void 0===i.min?e:0,s=void 0===i.max?e:0;return{start:n?s:o,end:n?o:s}}function yi(t,e){const i=[],n=t._getSortedDatasetMetas(e);let o,s;for(o=0,s=n.length;oi[t].axis===e)).shift()}function Pi(t,e){e=e||t._parsed;for(const i of e){const e=i._stacks;if(!e||void 0===e[t.vScale.id]||void 0===e[t.vScale.id][t.index])return;delete e[t.vScale.id][t.index]}}const Di=t=>"reset"===t||"none"===t,Ci=(t,e)=>e?t:Object.assign({},t);class Ai{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this.initialize()}initialize(){const t=this,e=t._cachedMeta;t.configure(),t.linkScales(),e._stacked=Mi(e.vScale,e),t.addElements()}updateIndex(t){this.index=t}linkScales(){const t=this,e=t.chart,i=t._cachedMeta,n=t.getDataset(),o=(t,e,i,n)=>"x"===t?e:"r"===t?n:i,s=i.xAxisID=K(n.xAxisID,Si(e,"x")),a=i.yAxisID=K(n.yAxisID,Si(e,"y")),r=i.rAxisID=K(n.rAxisID,Si(e,"r")),l=i.indexAxis,c=i.iAxisID=o(l,s,a,r),h=i.vAxisID=o(l,a,s,r);i.xScale=t.getScaleForId(s),i.yScale=t.getScaleForId(a),i.rScale=t.getScaleForId(r),i.iScale=t.getScaleForId(c),i.vScale=t.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&re(this._data,this),t._stacked&&Pi(t)}_dataCheck(){const t=this,e=t.getDataset(),i=e.data||(e.data=[]);U(i)?t._data=function(t){const e=Object.keys(t),i=new Array(e.length);let n,o,s;for(n=0,o=e.length;n0&&n._parsed[t-1];if(!1===i._parsing)n._parsed=o,n._sorted=!0;else{h=Y(o[t])?i.parseArrayData(n,o,t,e):U(o[t])?i.parseObjectData(n,o,t,e):i.parsePrimitiveData(n,o,t,e);const s=()=>null===c[r]||u&&c[r]p||d=0;--u)if(!m()){i.updateRangeFromParsed(c,t,g,l);break}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let n,o,s;for(n=0,o=e.length;n=0&&tn.getContext(i,o)),d);return g.$shared&&(g.$shared=l,s[a]=Object.freeze(Ci(g,l))),g}_resolveAnimations(t,e,i){const n=this,o=n.chart,s=n._cachedDataOpts,a="animation-"+e,r=s[a];if(r)return r;let l;if(!1!==o.options.animation){const o=n.chart.config,s=o.datasetAnimationScopeKeys(n._type,e),a=o.getOptionScopes(n.getDataset(),s);l=o.createResolver(a,n.getContext(t,i,e))}const c=new bi(o,l&&l.animations);return l&&l._cacheable&&(s[a]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Di(t)||this.chart._animationsDisabled}updateElement(t,e,i,n){Di(n)?Object.assign(t,i):this._resolveAnimations(e,n).update(t,i)}updateSharedOptions(t,e,i){t&&!Di(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,n){t.active=n;const o=this.getStyle(e,n);this._resolveAnimations(e,i,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this,i=e._cachedMeta.data.length,n=e._data.length;n>i?e._insertElements(i,n-i,t):n{for(t.length+=e,r=t.length-1;r>=a;r--)t[r]=t[r-e]};for(l(s),r=t;r{o[t]=n[t]&&n[t].active()?n[t]._to:i[t]})),o}}Oi.defaults={},Oi.defaultRoutes=void 0;const Ti=new Map;function Li(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let n=Ti.get(i);return n||(n=new Intl.NumberFormat(t,e),Ti.set(i,n)),n}(e,i).format(t)}const Ri={values:t=>Y(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const n=this.chart.options.locale;let o,s=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(o="scientific"),s=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=St(Math.abs(s)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:o,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Li(t,n,l)},logarithmic(t,e,i){if(0===t)return"0";const n=t/Math.pow(10,Math.floor(St(t)));return 1===n||2===n||5===n?Ri.numeric.call(this,t,e,i):""}};var Ei={formatters:Ri};function Ii(t,e){const i=t.options.ticks,n=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),n=t._length/i+(e?0:1),o=t._maxLength/i;return Math.floor(Math.min(n,o))}(t),o=i.major.enabled?function(t){const e=[];let i,n;for(i=0,n=t.length;in)return function(t,e,i,n){let o,s=0,a=i[0];for(n=Math.ceil(n),o=0;oo)return e}return Math.max(o,1)}(o,e,n);if(s>0){let t,i;const n=s>1?Math.round((r-a)/(s-1)):null;for(Fi(e,l,c,$(n)?0:a-n,a),t=0,i=s-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderColor:(t,e)=>e.color,borderWidth:(t,e)=>e.lineWidth},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ei.formatters.values,minor:{},major:{},align:"center",crossAlign:"near"}}),mt.route("scale.ticks","color","","color"),mt.route("scale.grid","color","","borderColor"),mt.route("scale.title","color","","color"),mt.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),mt.describe("scales",{_fallback:"scale"});const zi=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Vi(t,e){const i=[],n=t.length/e,o=t.length;let s=0;for(;sa+r)))return c}function Wi(t){return t.drawTicks?t.tickLength:0}function Hi(t,e){if(!t.display)return 0;const i=Ee(t.font,e),n=Re(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+n.height}function Ni(t,e,i){let o=n(t);return(i&&"right"!==e||!i&&"right"===e)&&(o=(t=>"left"===t?"right":"right"===t?"left":t)(o)),o}class ji extends Oi{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){const e=this;e.options=t,e.axis=t.axis,e._userMin=e.parse(t.min),e._userMax=e.parse(t.max),e._suggestedMin=e.parse(t.suggestedMin),e._suggestedMax=e.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:n}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),n=q(n,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,n),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){const e=this;let i,{min:n,max:o,minDefined:s,maxDefined:a}=e.getUserBounds();if(s&&a)return{min:n,max:o};const r=e.getMatchingVisibleMetas();for(let l=0,c=r.length;l=s||n<=1||!t.isHorizontal())return void(t.labelRotation=o);const h=t._getLabelSizes(),d=h.widest.width,u=h.highest.height,f=Ht(t.chart.width-d,0,t.maxWidth);a=e.offset?t.maxWidth/n:f/(n-1),d+6>a&&(a=f/(n-(e.offset?.5:1)),r=t.maxHeight-Wi(e.grid)-i.padding-Hi(e.title,t.chart.options.font),l=Math.sqrt(d*d+u*u),c=Et(Math.min(Math.asin(Math.min((h.highest.height+6)/a,1)),Math.asin(Math.min(r/l,1))-Math.asin(u/l))),c=Math.max(o,Math.min(s,c))),t.labelRotation=c}afterCalculateLabelRotation(){Q(this.options.afterCalculateLabelRotation,[this])}beforeFit(){Q(this.options.beforeFit,[this])}fit(){const t=this,e={width:0,height:0},{chart:i,options:{ticks:n,title:o,grid:s}}=t,a=t._isVisible(),r=t.isHorizontal();if(a){const a=Hi(o,i.options.font);if(r?(e.width=t.maxWidth,e.height=Wi(s)+a):(e.height=t.maxHeight,e.width=Wi(s)+a),n.display&&t.ticks.length){const{first:i,last:o,widest:s,highest:a}=t._getLabelSizes(),l=2*n.padding,c=Rt(t.labelRotation),h=Math.cos(c),d=Math.sin(c);if(r){const i=d*s.width+h*a.height;e.height=Math.min(t.maxHeight,e.height+i+l)}else{const i=n.mirror?0:h*s.width+d*a.height;e.width=Math.min(t.maxWidth,e.width+i+l)}t._calculatePadding(i,o,d,h)}}t._handleMargins(),r?(t.width=t._length=i.width-t._margins.left-t._margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=i.height-t._margins.top-t._margins.bottom)}_calculatePadding(t,e,i,n){const o=this,{ticks:{align:s,padding:a},position:r}=o.options,l=0!==o.labelRotation,c="top"!==r&&"x"===o.axis;if(o.isHorizontal()){const r=o.getPixelForTick(0)-o.left,h=o.right-o.getPixelForTick(o.ticks.length-1);let d=0,u=0;l?c?(d=n*t.width,u=i*e.height):(d=i*t.height,u=n*e.width):"start"===s?u=e.width:"end"===s?d=t.width:(d=t.width/2,u=e.width/2),o.paddingLeft=Math.max((d-r+a)*o.width/(o.width-r),0),o.paddingRight=Math.max((u-h+a)*o.width/(o.width-h),0)}else{let i=e.height/2,n=t.height/2;"start"===s?(i=0,n=t.height):"end"===s&&(i=e.height,n=0),o.paddingTop=i+a,o.paddingBottom=n+a}}_handleMargins(){const t=this;t._margins&&(t._margins.left=Math.max(t.paddingLeft,t._margins.left),t._margins.top=Math.max(t.paddingTop,t._margins.top),t._margins.right=Math.max(t.paddingRight,t._margins.right),t._margins.bottom=Math.max(t.paddingBottom,t._margins.bottom))}afterFit(){Q(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){const e=this;e.beforeTickToLabelConversion(),e.generateTickLabels(t),e.afterTickToLabelConversion()}_getLabelSizes(){const t=this;let e=t._labelSizes;if(!e){const i=t.options.ticks.sampleSize;let n=t.ticks;i{const i=t.gc,n=i.length/2;let o;if(n>e){for(o=0;o({width:o[t]||0,height:s[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y)}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){const e=this;e._reversePixels&&(t=1-t);const i=e._startPixel+t*e._length;return Nt(e._alignToPixels?Ut(e.chart,i,0):i)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this,i=e.ticks||[];if(t>=0&&tr*o?r/n:l/o:l*o0}_computeGridLineItems(t){const e=this,i=e.axis,n=e.chart,o=e.options,{grid:s,position:a}=o,r=s.offset,l=e.isHorizontal(),c=e.ticks.length+(r?1:0),h=Wi(s),d=[],u=s.setContext(e.getContext(0)),f=u.drawBorder?u.borderWidth:0,g=f/2,p=function(t){return Ut(n,t,f)};let m,x,b,_,y,v,M,w,k,S,P,D;if("top"===a)m=p(e.bottom),v=e.bottom-h,w=m-g,S=p(t.top)+g,D=t.bottom;else if("bottom"===a)m=p(e.top),S=t.top,D=p(t.bottom)-g,v=m+g,w=e.top+h;else if("left"===a)m=p(e.right),y=e.right-h,M=m-g,k=p(t.left)+g,P=t.right;else if("right"===a)m=p(e.left),k=t.left,P=p(t.right)-g,y=m+g,M=e.left+h;else if("x"===i){if("center"===a)m=p((t.top+t.bottom)/2+.5);else if(U(a)){const t=Object.keys(a)[0],i=a[t];m=p(e.chart.scales[t].getPixelForValue(i))}S=t.top,D=t.bottom,v=m+g,w=v+h}else if("y"===i){if("center"===a)m=p((t.left+t.right)/2);else if(U(a)){const t=Object.keys(a)[0],i=a[t];m=p(e.chart.scales[t].getPixelForValue(i))}y=m-g,M=y-h,k=t.left,P=t.right}for(x=0;xe.value===t));if(n>=0){return i.setContext(e.getContext(n)).lineWidth}return 0}drawGrid(t){const e=this,i=e.options.grid,n=e.ctx,o=e.chart,s=i.setContext(e.getContext(0)),a=i.drawBorder?s.borderWidth:0,r=e._gridLineItems||(e._gridLineItems=e._computeGridLineItems(t));let l,c;const h=(t,e,i)=>{i.width&&i.color&&(n.save(),n.lineWidth=i.width,n.strokeStyle=i.color,n.setLineDash(i.borderDash||[]),n.lineDashOffset=i.borderDashOffset,n.beginPath(),n.moveTo(t.x,t.y),n.lineTo(e.x,e.y),n.stroke(),n.restore())};if(i.display)for(l=0,c=r.length;l$i([o,...t],e,i,n)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,n)=>Ki(i,n,(()=>function(t,e,i,n){let o;for(const s of e)if(o=en(Xi(s,t),i),ht(o))return qi(t,o)?Ji(i,n,t,o):o}(n,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>nn(t).includes(e),ownKeys:t=>nn(t),set:(e,i,n)=>(t[0][i]=n,delete e[i],delete e._keys,!0)})}function Yi(t,e,i,n){const o={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ui(t,n),setContext:e=>Yi(t,e,i,n),override:o=>Yi(t.override(o),e,i,n)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Ki(t,e,(()=>function(t,e,i){const{_proxy:n,_context:o,_subProxy:s,_descriptors:a}=t;let r=n[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,n){const{_proxy:o,_context:s,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+[...r].join("->")+"->"+t);r.add(t),e=e(s,a||n),r.delete(t),U(e)&&(e=Ji(o._scopes,o,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,n){const{_proxy:o,_context:s,_subProxy:a,_descriptors:r}=i;if(ht(s.index)&&n(t))e=e[s.index%e.length];else if(U(e[0])){const i=e,n=o._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=Ji(n,o,t,l);e.push(Yi(i,s,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));qi(e,r)&&(r=Yi(r,o,s&&s[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,n)=>(t[i]=n,delete e[i],!0)})}function Ui(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:n=e.indexable,_allKeys:o=e.allKeys}=t;return{allKeys:o,scriptable:i,indexable:n,isScriptable:dt(i)?i:()=>i,isIndexable:dt(n)?n:()=>n}}const Xi=(t,e)=>t?t+ct(e):e,qi=(t,e)=>U(e)&&"adapters"!==t;function Ki(t,e,i){let n=t[e];return ht(n)||(n=i(),ht(n)&&(t[e]=n)),n}function Gi(t,e,i){return dt(t)?t(e,i):t}const Zi=(t,e)=>!0===t?e:"string"==typeof t?lt(e,t):void 0;function Qi(t,e,i,n){for(const o of e){const e=Zi(i,o);if(e){t.add(e);const o=Gi(e._fallback,i,e);if(ht(o)&&o!==i&&o!==n)return o}else if(!1===e&&ht(n)&&i!==n)return null}return!1}function Ji(t,e,i,n){const o=e._rootScopes,s=Gi(e._fallback,i,n),a=[...t,...o],r=new Set,l=t[0];U(l)&&!(i in l)&&r.add(l[i]={}),r.add(n);let c=tn(r,a,i,s||i);return null!==c&&((!ht(s)||s===i||(c=tn(r,a,s,c),null!==c))&&$i([...r],[""],o,s))}function tn(t,e,i,n){for(;i;)i=Qi(t,e,i,n);return i}function en(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ht(e))return e}}function nn(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return[...e]}(t._scopes)),e}const on=Number.EPSILON||1e-14,sn=(t,e)=>e!t.skip))),"monotone"===e.cubicInterpolationMode)rn(t);else{let i=n?t[t.length-1]:t[0];for(o=0,s=t.length;o0?e.y:t.y}}function un(t,e,i,n){const o={x:t.cp2x,y:t.cp2y},s={x:e.cp1x,y:e.cp1y},a=hn(t,o,i),r=hn(o,s,i),l=hn(s,e,i),c=hn(a,r,i),h=hn(r,l,i);return hn(c,h,i)}function fn(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function gn(t,e){let i,n;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,n=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=n)}function pn(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function mn(t){return"angle"===t?{between:Wt,compare:Vt,normalize:Bt}:{between:(t,e,i)=>t>=e&&t<=i,compare:(t,e)=>t-e,normalize:t=>t}}function xn(t,e,i,n){return{start:t%n,end:e%n,loop:i&&(e-t+1)%n==0}}function bn(t,e,i){if(!i)return[t];const{property:n,start:o,end:s}=i,a=e.length,{compare:r,between:l,normalize:c}=mn(n),{start:h,end:d,loop:u}=function(t,e,i){const{property:n,start:o,end:s}=i,{between:a,normalize:r}=mn(n),l=e.length;let c,h,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,c=0,h=l;cx||l(o,m,g)&&0!==r(o,m),y=()=>!x||0===r(s,g)||l(s,m,g);for(let t=h,i=h;t<=d;++t)p=e[t%a],p.skip||(g=c(p[n]),x=l(g,o,s),null===b&&_()&&(b=0===r(g,o)?t:i),null!==b&&y()&&(f.push(xn(b,t,u,a)),b=null),i=t,m=g);return null!==b&&f.push(xn(b,d,u,a)),f}function _n(t,e){const i=[],n=t.segments;for(let o=0;oo&&t[s%e].skip;)s--;return s%=e,{start:o,end:s}}(e,n,o,i);if(!0===i)return[{start:s,end:a,loop:o}];return function(t,e,i,n){const o=t.length,s=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%o];i.skip||i.stop?l.skip||(n=!1,s.push({start:e%o,end:(a-1)%o,loop:n}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&s.push({start:e%o,end:r%o,loop:n}),s}(e,s,a{const n=i.split("."),o=n.pop(),s=[t].concat(n).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");mt.route(s,o,l,r)}))}(e,t.defaultRoutes);t.descriptors&&mt.describe(e,t.descriptors)}(t,a,n),e.override&&mt.override(t.id,t.overrides)),a}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,n=this.scope;i in e&&delete e[i],n&&i in mt[n]&&(delete mt[n][i],this.override&&delete ut[i])}}var wn=new class{constructor(){this.controllers=new Mn(Ai,"datasets",!0),this.elements=new Mn(Oi,"elements"),this.plugins=new Mn(Object,"plugins"),this.scales=new Mn(ji,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){const n=this;[...e].forEach((e=>{const o=i||n._getRegistryForType(e);i||o.isForType(e)||o===n.plugins&&e.id?n._exec(t,o,e):J(e,(e=>{const o=i||n._getRegistryForType(e);n._exec(t,o,e)}))}))}_exec(t,e,i){const n=ct(t);Q(i["before"+n],[],i),e[t](i),Q(i["after"+n],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(n(e,i),t,"stop"),this._notify(n(i,e),t,"start")}}function Sn(t,e){return e||!1!==t?!0===t?{}:t:null}function Pn(t,e,i,n){const o=t.pluginScopeKeys(e),s=t.getOptionScopes(i,o);return t.createResolver(s,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Dn(t,e){const i=mt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Cn(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function An(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=ut[t.type]||{scales:{}},n=e.scales||{},o=Dn(t.type,e),s=Object.create(null),a=Object.create(null);return Object.keys(n).forEach((t=>{const e=n[t],r=Cn(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,o),c=i.scales||{};s[r]=s[r]||t,a[t]=st(Object.create(null),[{axis:r},e,c[r],c[l]])})),t.data.datasets.forEach((i=>{const o=i.type||t.type,r=i.indexAxis||Dn(o,e),l=(ut[o]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),o=i[e+"AxisID"]||s[e]||e;a[o]=a[o]||Object.create(null),st(a[o],[{axis:e},n[o],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];st(e,[mt.scales[e.type],mt.scale])})),a}(t,e)}const On=new Map,Tn=new Set;function Ln(t,e){let i=On.get(t);return i||(i=e(),On.set(t,i),Tn.add(i)),i}const Rn=(t,e,i)=>{const n=lt(e,i);void 0!==n&&t.add(n)};class En{constructor(t){this._config=function(t){const e=(t=t||{}).data=t.data||{datasets:[],labels:[]};return e.datasets=e.datasets||[],e.labels=e.labels||[],An(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=t}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),An(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Ln(t,(()=>[["datasets."+t,""]]))}datasetAnimationScopeKeys(t,e){return Ln(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,"transitions."+e],["datasets."+t,""]]))}datasetElementScopeKeys(t,e){return Ln(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,"datasets."+t,"elements."+e,""]]))}pluginScopeKeys(t){const e=t.id;return Ln(`${this.type}-plugin-${e}`,(()=>[["plugins."+e,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let n=i.get(t);return n&&!e||(n=new Map,i.set(t,n)),n}getOptionScopes(t,e,i){const{options:n,type:o}=this,s=this._cachedScopes(t,i),a=s.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Rn(r,t,e)))),e.forEach((t=>Rn(r,n,t))),e.forEach((t=>Rn(r,ut[o]||{},t))),e.forEach((t=>Rn(r,mt,t))),e.forEach((t=>Rn(r,ft,t)))}));const l=[...r];return Tn.has(e)&&s.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,ut[e]||{},mt.datasets[e]||{},{type:e},mt,ft]}resolveNamedOptions(t,e,i,n=[""]){const o={$shared:!0},{resolver:s,subPrefixes:a}=In(this._resolverCache,t,n);let r=s;if(function(t,e){const{isScriptable:i,isIndexable:n}=Ui(t);for(const o of e)if(i(o)&&dt(t[o])||n(o)&&Y(t[o]))return!0;return!1}(s,e)){o.$shared=!1;r=Yi(s,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)o[t]=r[t];return o}createResolver(t,e,i=[""],n){const{resolver:o}=In(this._resolverCache,t,i);return U(e)?Yi(o,e,void 0,n):o}}function In(t,e,i){let n=t.get(e);n||(n=new Map,t.set(e,n));const o=i.join();let s=n.get(o);if(!s){s={resolver:$i(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},n.set(o,s)}return s}const Fn=["top","bottom","left","right","chartArea"];function zn(t,e){return"top"===t||"bottom"===t||-1===Fn.indexOf(t)&&"x"===e}function Vn(t,e){return function(i,n){return i[t]===n[t]?i[e]-n[e]:i[t]-n[t]}}function Bn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),Q(i&&i.onComplete,[t],e)}function Wn(t){const e=t.chart,i=e.options.animation;Q(i&&i.onProgress,[t],e)}function Hn(){return"undefined"!=typeof window&&"undefined"!=typeof document}function Nn(t){return Hn()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const jn={},$n=t=>{const e=Nn(t);return Object.values(jn).filter((t=>t.canvas===e)).pop()};class Yn{constructor(t,e){const n=this;this.config=e=new En(e);const o=Nn(t),s=$n(o);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas can be reused.");const r=e.createResolver(e.chartOptionScopes(),n.getContext());this.platform=n._initializePlatform(o,e);const l=n.platform.acquireContext(o,r.aspectRatio),c=l&&l.canvas,h=c&&c.height,d=c&&c.width;this.id=j(),this.ctx=l,this.canvas=c,this.width=d,this.height=h,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._sortedMetasets=[],this.scales={},this.scale=void 0,this._plugins=new kn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((()=>this.update("resize")),r.resizeDelay||0),jn[n.id]=n,l&&c?(a.listen(n,"complete",Bn),a.listen(n,"progress",Wn),n._initialize(),n.attached&&n.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return $(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){const t=this;return t.notifyPlugins("beforeInit"),t.options.responsive?t.resize():be(t,t.options.devicePixelRatio),t.bindEvents(),t.notifyPlugins("afterInit"),t}_initializePlatform(t,e){return e.platform?new e.platform:!Hn()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?new Ke:new li}clear(){return Xt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this,n=i.options,o=i.canvas,s=n.maintainAspectRatio&&i.aspectRatio,a=i.platform.getMaximumSize(o,t,e,s),r=i.currentDevicePixelRatio,l=n.devicePixelRatio||i.platform.getDevicePixelRatio();i.width===a.width&&i.height===a.height&&r===l||(i.width=a.width,i.height=a.height,i._aspectRatio=i.aspectRatio,be(i,l,!0),i.notifyPlugins("resize",{size:a}),Q(n.onResize,[i,a],i),i.attached&&i._doResize()&&i.render())}ensureScalesHaveIDs(){J(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this,e=t.options,i=e.scales,n=t.scales,o=Object.keys(n).reduce(((t,e)=>(t[e]=!1,t)),{});let s=[];i&&(s=s.concat(Object.keys(i).map((t=>{const e=i[t],n=Cn(t,e),o="r"===n,s="x"===n;return{options:e,dposition:o?"chartArea":s?"bottom":"left",dtype:o?"radialLinear":s?"category":"linear"}})))),J(s,(i=>{const s=i.options,a=s.id,r=Cn(a,s),l=K(s.type,i.dtype);void 0!==s.position&&zn(s.position,r)===zn(i.dposition)||(s.position=i.dposition),o[a]=!0;let c=null;if(a in n&&n[a].type===l)c=n[a];else{c=new(wn.getScale(l))({id:a,type:l,ctx:t.ctx,chart:t}),n[c.id]=c}c.init(s,e)})),J(o,((t,e)=>{t||delete n[e]})),J(n,(e=>{Xe.configure(t,e,e.options),Xe.addBox(t,e)}))}_updateMetasetIndex(t,e){const i=this._metasets,n=t.index;n!==e&&(i[n]=i[e],i[e]=t,t.index=e)}_updateMetasets(){const t=this,e=t._metasets,i=t.data.datasets.length,n=e.length;if(n>i){for(let e=i;ei.length&&delete t._stacks,e.forEach(((e,n)=>{0===i.filter((t=>t===e._dataset)).length&&t._destroyDatasetMeta(n)}))}buildOrUpdateControllers(){const t=this,e=[],i=t.data.datasets;let n,o;for(t._removeUnreferencedMetasets(),n=0,o=i.length;n{t.getDatasetMeta(i).controller.reset()}),t)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this,i=e.config;i.update(),e._options=i.createResolver(i.chartOptionScopes(),e.getContext()),J(e.scales,(t=>{Xe.removeBox(e,t)}));const n=e._animationsDisabled=!e.options.animation;if(e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e._plugins.invalidate(),!1===e.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const o=e.buildOrUpdateControllers();e.notifyPlugins("beforeElementsUpdate");let s=0;for(let t=0,i=e.data.datasets.length;t{t.reset()})),e._updateDatasets(t),e.notifyPlugins("afterUpdate",{mode:t}),e._layers.sort(Vn("z","_idx")),e._lastEvent&&e._eventHandler(e._lastEvent,!0),e.render()}_updateLayout(t){const e=this;if(!1===e.notifyPlugins("beforeLayout",{cancelable:!0}))return;Xe.update(e,e.width,e.height,t);const i=e.chartArea,n=i.width<=0||i.height<=0;e._layers=[],J(e.boxes,(t=>{n&&"chartArea"===t.position||(t.configure&&t.configure(),e._layers.push(...t._layers()))}),e),e._layers.forEach(((t,e)=>{t._idx=e})),e.notifyPlugins("afterLayout")}_updateDatasets(t){const e=this,i="function"==typeof t;if(!1!==e.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let n=0,o=e.data.datasets.length;n=0;--i)t._drawDataset(e[i]);t.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this,i=e.ctx,n=t._clip,o=e.chartArea,s={meta:t,index:t.index,cancelable:!0};!1!==e.notifyPlugins("beforeDatasetDraw",s)&&(Gt(i,{left:!1===n.left?0:o.left-n.left,right:!1===n.right?e.width:o.right+n.right,top:!1===n.top?0:o.top-n.top,bottom:!1===n.bottom?e.height:o.bottom+n.bottom}),t.controller.draw(),Zt(i),s.cancelable=!1,e.notifyPlugins("afterDatasetDraw",s))}getElementsAtEventForMode(t,e,i,n){const o=De.modes[e];return"function"==typeof o?o(this,t,i,n):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let n=i.filter((t=>t&&t._dataset===e)).pop();return n||(n=i[t]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1}),n}getContext(){return this.$context||(this.$context={chart:this,type:"chart"})}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateDatasetVisibility(t,e){const i=this,n=e?"show":"hide",o=i.getDatasetMeta(t),s=o.controller._resolveAnimations(void 0,n);i.setDatasetVisibility(t,e),s.update(o,{visible:e}),i.update((e=>e.datasetIndex===t?n:void 0))}hide(t){this._updateDatasetVisibility(t,!1)}show(t){this._updateDatasetVisibility(t,!0)}_destroyDatasetMeta(t){const e=this,i=e._metasets&&e._metasets[t];i&&i.controller&&(i.controller._destroy(),delete e._metasets[t])}destroy(){const t=this,{canvas:e,ctx:i}=t;let n,o;for(t.stop(),a.remove(t),n=0,o=t.data.datasets.length;n{i.addEventListener(t,n,o),e[n]=o},o=(n,o)=>{e[n]&&(i.removeEventListener(t,n,o),delete e[n])};let s=function(e,i,n){e.offsetX=i,e.offsetY=n,t._eventHandler(e)};if(J(t.options.events,(t=>n(t,s))),t.options.responsive){let e;s=(e,i)=>{t.canvas&&t.resize(e,i)};const a=()=>{o("attach",a),t.attached=!0,t.resize(),n("resize",s),n("detach",e)};e=()=>{t.attached=!1,o("resize",s),n("attach",a)},i.isAttached(t.canvas)?a():e()}else t.attached=!0}unbindEvents(){const t=this,e=t._listeners;e&&(delete t._listeners,J(e,((e,i)=>{t.platform.removeEventListener(t,i,e)})))}updateHoverStyle(t,e,i){const n=i?"set":"remove";let o,s,a,r;for("dataset"===e&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),a=0,r=t.length;a{const n=e.getDatasetMeta(t);if(!n)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:n.data[i],index:i}}));!tt(n,i)&&(e._active=n,e._updateHoverStyles(n,i))}notifyPlugins(t,e){return this._plugins.notify(this,t,e)}_updateHoverStyles(t,e,i){const n=this,o=n.options.hover,s=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),a=s(e,t),r=i?t:s(t,e);a.length&&n.updateHoverStyle(a,o.mode,!1),r.length&&o.mode&&n.updateHoverStyle(r,o.mode,!0)}_eventHandler(t,e){const i=this,n={event:t,replay:e,cancelable:!0};if(!1===i.notifyPlugins("beforeEvent",n))return;const o=i._handleEvent(t,e);return n.cancelable=!1,i.notifyPlugins("afterEvent",n),(o||n.changed)&&i.render(),i}_handleEvent(t,e){const i=this,{_active:n=[],options:o}=i,s=o.hover,a=e;let r=[],l=!1,c=null;return"mouseout"!==t.type&&(r=i.getElementsAtEventForMode(t,s.mode,s,a),c="click"===t.type?i._lastEvent:t),i._lastEvent=null,Q(o.onHover,[t,r,i],i),"mouseup"!==t.type&&"click"!==t.type&&"contextmenu"!==t.type||Kt(t,i.chartArea,i._minPadding)&&Q(o.onClick,[t,r,i],i),l=!tt(r,n),(l||e)&&(i._active=r,i._updateHoverStyles(r,n,e)),i._lastEvent=c,l}}const Un=()=>J(Yn.instances,(t=>t._plugins.invalidate())),Xn=!0;function qn(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}Object.defineProperties(Yn,{defaults:{enumerable:Xn,value:mt},instances:{enumerable:Xn,value:jn},overrides:{enumerable:Xn,value:ut},registry:{enumerable:Xn,value:wn},version:{enumerable:Xn,value:"3.0.2"},getChart:{enumerable:Xn,value:$n},register:{enumerable:Xn,value:(...t)=>{wn.add(...t),Un()}},unregister:{enumerable:Xn,value:(...t)=>{wn.remove(...t),Un()}}});class Kn{constructor(t){this.options=t||{}}formats(){return qn()}parse(t,e){return qn()}format(t,e){return qn()}add(t,e,i){return qn()}diff(t,e,i){return qn()}startOf(t,e,i){return qn()}endOf(t,e){return qn()}}Kn.override=function(t){Object.assign(Kn.prototype,t)};var Gn={_date:Kn};function Zn(t){const e=function(t){if(!t._cache.$bar){const e=t.getMatchingVisibleMetas("bar");let i=[];for(let n=0,o=e.length;nt-e)))}return t._cache.$bar}(t);let i,n,o,s,a=t._length;const r=()=>{a=Math.min(a,i&&Math.abs(o-s)||a),s=o};for(i=0,n=e.length;iMath.abs(r)&&(l=r,c=a),e[i.axis]=c,e._custom={barStart:l,barEnd:c,start:o,end:s,min:a,max:r}}(t,e,i,n):e[i.axis]=i.parse(t,n),e}function Jn(t,e,i,n){const o=t.iScale,s=t.vScale,a=o.getLabels(),r=o===s,l=[];let c,h,d,u;for(c=i,h=i+n;c0?(p+=t,h-=t):h<0&&(p-=t,h+=t)}return{size:h,base:p,head:c,center:c+h/2}}_calculateBarIndexPixels(t,e){const i=this,n=e.scale,o=i.options,s=K(o.maxBarThickness,1/0);let a,r;if(e.grouped){const n=o.skipNull?i._getStackCount(t):e.stackCount,l="flex"===o.barThickness?function(t,e,i,n){const o=e.pixels,s=o[t];let a=t>0?o[t-1]:null,r=t=0;--n)i=Math.max(i,t[n].size()/2,e[n]._custom);return i>0&&i}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:n}=e,o=this.getParsed(t),s=i.getLabelForValue(o.x),a=n.getLabelForValue(o.y),r=o._custom;return{label:e.label,value:"("+s+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,n){const o=this,s="reset"===n,{xScale:a,yScale:r}=o._cachedMeta,l=o.resolveDataElementOptions(e,n),c=o.getSharedOptions(l),h=o.includeOptions(n,c);for(let l=e;l""}}}};class no extends Ai{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,n=this._cachedMeta;let o,s;for(o=t,s=t+e;oWt(t,r,l)?1:Math.max(e,e*i,n,n*i),g=(t,e,n)=>Wt(t,r,l)?-1:Math.min(e,e*i,n,n*i),p=f(0,c,d),m=f(Mt,h,u),x=g(xt,c,d),b=g(xt+Mt,h,u);n=(p-x)/2,o=(m-b)/2,s=-(p+x)/2,a=-(m+b)/2}return{ratioX:n,ratioY:o,offsetX:s,offsetY:a}}(d,h,l),m=(n.width-a)/u,x=(n.height-a)/f,b=Math.max(Math.min(m,x)/2,0),_=Z(e.options.radius,b),y=(_-Math.max(_*l,0))/e._getVisibleDatasetWeightTotal();e.offsetX=g*_,e.offsetY=p*_,o.total=e.calculateTotal(),e.outerRadius=_-y*e._getRingWeightOffset(e.index),e.innerRadius=Math.max(e.outerRadius-y*c,0),e.updateElements(s,0,s.length,t)}_circumference(t,e){const i=this,n=i.options,o=i._cachedMeta,s=i._getCircumference();return e&&n.animation.animateRotate||!this.chart.getDataVisibility(t)||null===o._parsed[t]?0:i.calculateCircumference(o._parsed[t]*s/bt)}updateElements(t,e,i,n){const o=this,s="reset"===n,a=o.chart,r=a.chartArea,l=a.options.animation,c=(r.left+r.right)/2,h=(r.top+r.bottom)/2,d=s&&l.animateScale,u=d?0:o.innerRadius,f=d?0:o.outerRadius,g=o.resolveDataElementOptions(e,n),p=o.getSharedOptions(g),m=o.includeOptions(n,p);let x,b=o._getRotation();for(x=0;x0&&!isNaN(t)?bt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,n=i.data.labels||[],o=Li(e._parsed[t],i.options.locale);return{label:n[t]||"",value:o}}getMaxBorderWidth(t){const e=this;let i=0;const n=e.chart;let o,s,a,r,l;if(!t)for(o=0,s=n.data.datasets.length;o{const n=t.getDatasetMeta(0).controller.getStyle(i);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,hidden:!t.getDataVisibility(i),index:i}})):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class oo extends Ai{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this,i=e._cachedMeta,{dataset:n,data:o=[],_dataset:s}=i,a=e.chart._animationsDisabled;let{start:r,count:l}=function(t,e,i){const n=e.length;let o=0,s=n;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:c,max:h,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(o=Ht(Math.min(ie(r,a.axis,c).lo,i?n:ie(e,l,a.getPixelForValue(c)).lo),0,n-1)),s=u?Ht(Math.max(ie(r,a.axis,h).hi+1,i?0:ie(e,l,a.getPixelForValue(h)).hi+1),o,n)-o:n-o}return{start:o,count:s}}(i,o,a);if(e._drawStart=r,e._drawCount=l,function(t){const{xScale:e,yScale:i,_scaleRanges:n}=t,o={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!n)return t._scaleRanges=o,!0;const s=n.xmin!==e.min||n.xmax!==e.max||n.ymin!==i.min||n.ymax!==i.max;return Object.assign(n,o),s}(i)&&(r=0,l=o.length),n._decimated=!!s._decimated,n.points=o,"resize"!==t){const i=e.resolveDatasetElementOptions(t);e.options.showLine||(i.borderWidth=0),e.updateElement(n,void 0,{animated:!a,options:i},t)}e.updateElements(o,r,l,t)}updateElements(t,e,i,n){const o=this,s="reset"===n,{xScale:a,yScale:r,_stacked:l}=o._cachedMeta,c=o.resolveDataElementOptions(e,n),h=o.getSharedOptions(c),d=o.includeOptions(n,h),u=o.options.spanGaps,f=At(u)?u:Number.POSITIVE_INFINITY,g=o.chart._animationsDisabled||s||"none"===n;let p=e>0&&o.getParsed(e-1);for(let c=e;c0&&i.x-p.x>f,d&&(u.options=h||o.resolveDataElementOptions(c,n)),g||o.updateElement(e,c,u,n),p=i}o.updateSharedOptions(h,n,c)}getMaxOverflow(){const t=this,e=t._cachedMeta,i=e.dataset,n=i.options&&i.options.borderWidth||0,o=e.data||[];if(!o.length)return n;const s=o[0].size(t.resolveDataElementOptions(0)),a=o[o.length-1].size(t.resolveDataElementOptions(o.length-1));return Math.max(n,s,a)/2}draw(){this._cachedMeta.dataset.updateControlPoints(this.chart.chartArea),super.draw()}}oo.id="line",oo.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},oo.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class so extends Ai{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this,e=t.chart,i=e.chartArea,n=e.options,o=Math.min(i.right-i.left,i.bottom-i.top),s=Math.max(o/2,0),a=(s-Math.max(n.cutoutPercentage?s/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();t.outerRadius=s-a*t.index,t.innerRadius=t.outerRadius-a}updateElements(t,e,i,n){const o=this,s="reset"===n,a=o.chart,r=o.getDataset(),l=a.options.animation,c=o._cachedMeta.rScale,h=c.xCenter,d=c.yCenter,u=c.getIndexAngle(0)-.5*xt;let f,g=u;const p=360/o.countVisibleElements();for(f=0;f{!isNaN(t.data[n])&&this.chart.getDataVisibility(n)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?Rt(this.resolveDataElementOptions(t,e).angle||i):0}}so.id="polarArea",so.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},so.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(((e,i)=>{const n=t.getDatasetMeta(0).controller.getStyle(i);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,hidden:!t.getDataVisibility(i),index:i}})):[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class ao extends no{}ao.id="pie",ao.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class ro extends Ai{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){const e=this,i=e._cachedMeta,n=i.dataset,o=i.data||[],s=i.iScale.getLabels();if(n.points=o,"resize"!==t){const i=e.resolveDatasetElementOptions(t);e.options.showLine||(i.borderWidth=0);const a={_loop:!0,_fullLoop:s.length===o.length,options:i};e.updateElement(n,void 0,a,t)}e.updateElements(o,0,o.length,t)}updateElements(t,e,i,n){const o=this,s=o.getDataset(),a=o._cachedMeta.rScale,r="reset"===n;for(let l=e;l"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var co=Object.freeze({__proto__:null,BarController:eo,BubbleController:io,DoughnutController:no,LineController:oo,PolarAreaController:so,PieController:ao,RadarController:ro,ScatterController:lo});function ho(t,e){const{startAngle:i,endAngle:n,pixelMargin:o,x:s,y:a,outerRadius:r,innerRadius:l}=e;let c=o/r;t.beginPath(),t.arc(s,a,r,i-c,n+c),l>o?(c=o/l,t.arc(s,a,l,n+c,i-c,!0)):t.arc(s,a,o,n+Mt,i-Mt),t.closePath(),t.clip()}function uo(t,e){const{x:i,y:n,startAngle:o,endAngle:s,pixelMargin:a}=e,r=Math.max(e.outerRadius-a,0),l=e.innerRadius+a;t.beginPath(),t.arc(i,n,r,o,s),t.arc(i,n,l,s,o,!0),t.closePath()}function fo(t,e){const{x:i,y:n,startAngle:o,endAngle:s,pixelMargin:a,options:r}=e,l=e.outerRadius,c=e.innerRadius+a,h="inner"===r.borderAlign;r.borderWidth&&(h?(t.lineWidth=2*r.borderWidth,t.lineJoin="round"):(t.lineWidth=r.borderWidth,t.lineJoin="bevel"),e.fullCircles&&function(t,e,i){const{x:n,y:o,startAngle:s,endAngle:a,pixelMargin:r}=e,l=Math.max(e.outerRadius-r,0),c=e.innerRadius+r;let h;for(i&&(e.endAngle=e.startAngle+bt,ho(t,e),e.endAngle=a,e.endAngle===e.startAngle&&(e.endAngle+=bt,e.fullCircles--)),t.beginPath(),t.arc(n,o,c,s+bt,s,!0),h=0;h=bt||Wt(o,a,r))&&(s>=l&&s<=c)}getCenterPoint(t){const{x:e,y:i,startAngle:n,endAngle:o,innerRadius:s,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),r=(n+o)/2,l=(s+a)/2;return{x:e+Math.cos(r)*l,y:i+Math.sin(r)*l}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const e=this,i=e.options,n=i.offset||0;if(e.pixelMargin="inner"===i.borderAlign?.33:0,e.fullCircles=Math.floor(e.circumference/bt),!(0===e.circumference||e.innerRadius<0||e.outerRadius<0)){if(t.save(),n&&e.circumference(a+(c?r-t:t))%s,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=o[b(0)],t.moveTo(d.x,d.y)),h=0;h<=r;++h){if(d=o[b(h)],d.skip)continue;const e=d.x,i=d.y,n=0|e;n===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=n,x=0,f=g=i),p=i}_()}function _o(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||e.stepped||i)?bo:xo}go.id="arc",go.defaults={borderAlign:"center",borderColor:"#fff",borderWidth:2,offset:0,angle:void 0},go.defaultRoutes={backgroundColor:"backgroundColor"};const yo="function"==typeof Path2D?function(t,e,i,n){let o=e._path;o||(o=e._path=new Path2D,e.path(o,i,n)&&o.closePath()),t.stroke(o)}:function(t,e,i,n){t.beginPath(),e.path(t,i,n)&&t.closePath(),t.stroke()};class vo extends Oi{constructor(t){super(),this.animated=!0,this.options=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,t&&Object.assign(this,t)}updateControlPoints(t){const e=this,i=e.options;if(i.tension&&!i.stepped&&!e._pointsUpdated){const n=i.spanGaps?e._loop:e._fullLoop;cn(e._points,i,t,n),e._pointsUpdated=!0}}set points(t){const e=this;e._points=t,delete e._segments,delete e._path,e._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=yn(this))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this,n=i.options,o=t[e],s=i.points,a=_n(i,{property:e,start:o,end:o});if(!a.length)return;const r=[],l=function(t){return t.stepped?dn:t.tension?un:hn}(n);let c,h;for(c=0,h=a.length;c"borderDash"!==t&&"fill"!==t};class wo extends Oi{constructor(t){super(),this.options=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const n=this.options,{x:o,y:s}=this.getProps(["x","y"],i);return Math.pow(t-o,2)+Math.pow(e-s,2)t.x):Po(e,"bottom","top",t.base=a.left&&e<=a.right)&&(s||i>=a.top&&i<=a.bottom)}function To(t,e){const{x:i,y:n,w:o,h:s,radius:a}=e;t.arc(i+a.topLeft,n+a.topLeft,a.topLeft,-Mt,xt,!0),t.lineTo(i,n+s-a.bottomLeft),t.arc(i+a.bottomLeft,n+s-a.bottomLeft,a.bottomLeft,xt,Mt,!0),t.lineTo(i+o-a.bottomRight,n+s),t.arc(i+o-a.bottomRight,n+s-a.bottomRight,a.bottomRight,Mt,0,!0),t.lineTo(i+o,n+a.topRight),t.arc(i+o-a.topRight,n+a.topRight,a.topRight,0,-Mt,!0),t.lineTo(i+a.topLeft,n)}function Lo(t,e){t.rect(e.x,e.y,e.w,e.h)}wo.id="point",wo.defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0},wo.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};class Ro extends Oi{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,t&&Object.assign(this,t)}draw(t){const e=this.options,{inner:i,outer:n}=Ao(this),o=(s=n.radius).topLeft||s.topRight||s.bottomLeft||s.bottomRight?To:Lo;var s;t.save(),n.w===i.w&&n.h===i.h||(t.beginPath(),o(t,n),t.clip(),o(t,i),t.fillStyle=e.borderColor,t.fill("evenodd")),t.beginPath(),o(t,i),t.fillStyle=e.backgroundColor,t.fill(),t.restore()}inRange(t,e,i){return Oo(this,t,e,i)}inXRange(t,e){return Oo(this,t,null,e)}inYRange(t,e){return Oo(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:n,horizontal:o}=this.getProps(["x","y","base","horizontal"],t);return{x:o?(e+n)/2:e,y:o?i:(i+n)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}Ro.id="bar",Ro.defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,pointStyle:void 0},Ro.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};var Eo=Object.freeze({__proto__:null,ArcElement:go,LineElement:vo,PointElement:wo,BarElement:Ro});function Io(t){t.data.datasets.forEach((t=>{if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{value:e})}}))}var Fo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Io(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:s,indexAxis:a}=e,r=t.getDatasetMeta(o),l=s||e.data;if("y"===Ie([a,t.options.indexAxis]))return;if("line"!==r.type)return;const c=t.scales[r.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;if(l.length<=4*n)return;let h;switch($(s)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":h=function(t,e,i){const n=i.samples||e,o=[],s=(t.length-2)/(n-2);let a,r,l,c,h,d=0,u=0;for(o[d++]=t[u],a=0;al&&(l=c,r=t[e],h=e);o[d++]=r,u=h}return o[d++]=t[t.length-1],o}(l,n,i);break;case"min-max":h=function(t,e){let i,n,o,s,a,r,l,c,h,d,u=0,f=0;const g=[],p=t[0].x,m=t[t.length-1].x-p;for(i=0;id&&(d=s,l=i),u=(f*u+n.x)/++f;else{const e=i-1;if(!$(r)&&!$(l)){const i=Math.min(r,l),n=Math.max(r,l);i!==c&&i!==e&&g.push({...t[i],x:u}),n!==c&&n!==e&&g.push({...t[n],x:u})}i>0&&e!==c&&g.push(t[e]),g.push(n),a=x,f=0,h=d=s,r=l=c=i}}return g}(l,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=h}))},destroy(t){Io(t)}};function zo(t,e,i){const n=function(t){const e=t.options,i=e.fill;let n=K(i&&i.target,i);return void 0===n&&(n=!!e.backgroundColor),!1!==n&&null!==n&&(!0===n?"origin":n)}(t);if(U(n))return!isNaN(n.value)&&n;let o=parseFloat(n);return X(o)&&Math.floor(o)===o?("-"!==n[0]&&"+"!==n[0]||(o=e+o),!(o===e||o<0||o>=i)&&o):["origin","start","end","stack"].indexOf(n)>=0&&n}class Vo{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:n,y:o,radius:s}=this;return e=e||{start:0,end:bt},t.arc(n,o,s,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:n}=this,o=t.angle;return{x:e+Math.cos(o)*n,y:i+Math.sin(o)*n,angle:o}}}function Bo(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,n=e.options,o=e.getLabels().length,s=[],a=n.reverse?e.max:e.min,r=n.reverse?e.min:e.max;let l,c,h;if(h="start"===i?a:"end"===i?r:U(i)?i.value:e.getBaseValue(),n.grid.circular)return c=e.getPointPositionForValue(0,a),new Vo({x:c.x,y:c.y,radius:e.getDistanceFromCenterForValue(h)});for(l=0;l"line"===t.type&&!t.hidden;function No(t,e,i){const n=[];for(let o=0;o=n&&o<=c){r=o===n,l=o===c;break}}return{first:r,last:l,point:n}}function $o(t,e){let i=[],n=!1;return Y(t)?(n=!0,i=t):i=function(t,e){const{x:i=null,y:n=null}=t||{},o=e.points,s=[];return e.segments.forEach((t=>{const e=o[t.start],a=o[t.end];null!==n?(s.push({x:e.x,y:n}),s.push({x:a.x,y:n})):null!==i&&(s.push({x:i,y:e.y}),s.push({x:i,y:a.y}))})),s}(t,e),i.length?new vo({points:i,options:{tension:0},_loop:n,_fullLoop:n}):null}function Yo(t,e,i){let n=t[e].fill;const o=[e];let s;if(!i)return n;for(;!1!==n&&-1===o.indexOf(n);){if(!X(n))return n;if(s=t[n],!s)return!1;if(s.visible)return n;o.push(n),n=s.fill}return!1}function Uo(t,e,i){t.beginPath(),e.path(t),t.lineTo(e.last().x,i),t.lineTo(e.first().x,i),t.closePath(),t.clip()}function Xo(t,e,i,n){if(n)return;let o=e[t],s=i[t];return"angle"===t&&(o=Bt(o),s=Bt(s)),{property:t,start:o,end:s}}function qo(t,e,i,n){return t&&e?n(t[i],e[i]):t?t[i]:e?e[i]:0}function Ko(t,e,i){const{top:n,bottom:o}=e.chart.chartArea,{property:s,start:a,end:r}=i||{};"x"===s&&(t.beginPath(),t.rect(a,n,r-a,o-n),t.clip())}function Go(t,e,i,n){const o=e.interpolate(i,n);o&&t.lineTo(o.x,o.y)}function Zo(t,e){const{line:i,target:n,property:o,color:s,scale:a}=e,r=function(t,e,i){const n=t.segments,o=t.points,s=e.points,a=[];for(let t=0;t=0;--n)o=e[n].$filler,o&&o.line.updateControlPoints(i)},beforeDatasetDraw(t,e){const i=t.chartArea,n=t.ctx,o=e.meta.$filler;if(!o||!1===o.fill)return;const s=function(t){const{chart:e,fill:i,line:n}=t;if(X(i))return function(t,e){const i=t.getDatasetMeta(e);return i&&t.isDatasetVisible(e)?i.dataset:null}(e,i);if("stack"===i)return Wo(t);const o=Bo(t);return o instanceof Vo?o:$o(o,n)}(o),{line:a,scale:r}=o,l=a.options,c=l.fill,h=l.backgroundColor,{above:d=h,below:u=h}=c||{};s&&a.points.length&&(Gt(n,i),function(t,e){const{line:i,target:n,above:o,below:s,area:a,scale:r}=e,l=i._loop?"angle":"x";t.save(),"x"===l&&s!==o&&(Uo(t,n,a.top),Zo(t,{line:i,target:n,color:o,scale:r,property:l}),t.restore(),t.save(),Uo(t,n,a.bottom)),Zo(t,{line:i,target:n,color:s,scale:r,property:l}),t.restore()}(n,{line:a,target:s,above:d,below:u,area:i,scale:r}),Zt(n))},defaults:{propagate:!0}};const Jo=(t,e)=>{let{boxHeight:i=e,boxWidth:n=e}=t;return t.usePointStyle&&(i=Math.min(i,e),n=Math.min(n,e)),{boxWidth:n,boxHeight:i,itemHeight:Math.max(e,i)}};class ts extends Oi{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){const n=this;n.maxWidth=t,n.maxHeight=e,n._margins=i,n.setDimensions(),n.buildLabels(),n.fit()}setDimensions(){const t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height)}buildLabels(){const t=this,e=t.options.labels||{};let i=Q(e.generateLabels,[t.chart],t)||[];e.filter&&(i=i.filter((i=>e.filter(i,t.chart.data)))),e.sort&&(i=i.sort(((i,n)=>e.sort(i,n,t.chart.data)))),t.options.reverse&&i.reverse(),t.legendItems=i}fit(){const t=this,{options:e,ctx:i}=t;if(!e.display)return void(t.width=t.height=0);const n=e.labels,o=Ee(n.font),s=o.size,a=t._computeTitleHeight(),{boxWidth:r,itemHeight:l}=Jo(n,s);let c,h;i.font=o.string,t.isHorizontal()?(c=t.maxWidth,h=t._fitRows(a,s,r,l)+10):(h=t.maxHeight,c=t._fitCols(a,s,r,l)+10),t.width=Math.min(c,e.maxWidth||t.maxWidth),t.height=Math.min(h,e.maxHeight||t.maxHeight)}_fitRows(t,e,i,n){const o=this,{ctx:s,maxWidth:a,options:{labels:{padding:r}}}=o,l=o.legendHitBoxes=[],c=o.lineWidths=[0],h=n+r;let d=t;s.textAlign="left",s.textBaseline="middle";let u=-1,f=-h;return o.legendItems.forEach(((t,o)=>{const g=i+e/2+s.measureText(t.text).width;(0===o||c[c.length-1]+g+2*r>a)&&(d+=h,c[c.length-(o>0?0:1)]=0,f+=h,u++),l[o]={left:0,top:f,row:u,width:g,height:n},c[c.length-1]+=g+r})),d}_fitCols(t,e,i,n){const o=this,{ctx:s,maxHeight:a,options:{labels:{padding:r}}}=o,l=o.legendHitBoxes=[],c=o.columnSizes=[],h=a-t;let d=r,u=0,f=0,g=0,p=0,m=0;return o.legendItems.forEach(((t,o)=>{const a=i+e/2+s.measureText(t.text).width;o>0&&f+e+2*r>h&&(d+=u+r,c.push({width:u,height:f}),g+=u+r,m++,p=0,u=f=0),u=Math.max(u,a),f+=e+r,l[o]={left:g,top:p,col:m,width:a,height:n},p+=n+r})),d+=u,c.push({width:u,height:f}),d}adjustHitBoxes(){const t=this;if(!t.options.display)return;const e=t._computeTitleHeight(),{legendHitBoxes:i,options:{align:n,labels:{padding:s}}}=t;if(this.isHorizontal()){let a=0,r=o(n,t.left+s,t.right-t.lineWidths[a]);for(const l of i)a!==l.row&&(a=l.row,r=o(n,t.left+s,t.right-t.lineWidths[a])),l.top+=t.top+e+s,l.left=r,r+=l.width+s}else{let a=0,r=o(n,t.top+e+s,t.bottom-t.columnSizes[a].height);for(const l of i)l.col!==a&&(a=l.col,r=o(n,t.top+e+s,t.bottom-t.columnSizes[a].height)),l.top=r,l.left+=t.left+s,r+=l.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){const t=this;if(t.options.display){const e=t.ctx;Gt(e,t),t._draw(),Zt(e)}}_draw(){const t=this,{options:e,columnSizes:i,lineWidths:n,ctx:a}=t,{align:r,labels:l}=e,c=mt.color,h=fn(e.rtl,t.left,t.width),d=Ee(l.font),{color:u,padding:f}=l,g=d.size,p=g/2;let m;t.drawTitle(),a.textAlign=h.textAlign("left"),a.textBaseline="middle",a.lineWidth=.5,a.strokeStyle=u,a.fillStyle=u,a.font=d.string;const{boxWidth:x,boxHeight:b,itemHeight:_}=Jo(l,g),y=t.isHorizontal(),v=this._computeTitleHeight();m=y?{x:o(r,t.left+f,t.right-n[0]),y:t.top+f+v,line:0}:{x:t.left+f,y:o(r,t.top+v+f,t.bottom-i[0].height),line:0},gn(t.ctx,e.textDirection);const M=_+f;t.legendItems.forEach(((e,u)=>{const w=a.measureText(e.text).width,k=h.textAlign(e.textAlign||(e.textAlign=l.textAlign)),S=x+g/2+w;let P=m.x,D=m.y;h.setWidth(t.width),y?u>0&&P+S+f>t.right&&(D=m.y+=M,m.line++,P=m.x=o(r,t.left+f,t.right-n[m.line])):u>0&&D+M>t.bottom&&(P=m.x=P+i[m.line].width+f,m.line++,D=m.y=o(r,t.top+v+f,t.bottom-i[m.line].height));!function(t,e,i){if(isNaN(x)||x<=0||isNaN(b)||b<0)return;a.save();const n=K(i.lineWidth,1);if(a.fillStyle=K(i.fillStyle,c),a.lineCap=K(i.lineCap,"butt"),a.lineDashOffset=K(i.lineDashOffset,0),a.lineJoin=K(i.lineJoin,"miter"),a.lineWidth=n,a.strokeStyle=K(i.strokeStyle,c),a.setLineDash(K(i.lineDash,[])),l.usePointStyle){const o={radius:x*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},s=h.xPlus(t,x/2);qt(a,o,s,e+p)}else{const i=e+Math.max((g-b)/2,0);a.fillRect(h.leftForLtr(t,x),i,x,b),0!==n&&a.strokeRect(h.leftForLtr(t,x),i,x,b)}a.restore()}(h.x(P),D,e),P=s(k,P+x+p,t.right),function(t,e,i){te(a,i.text,t,e+_/2,d,{strikethrough:i.hidden,textAlign:i.textAlign})}(h.x(P),D,e),y?m.x+=S+f:m.y+=M})),pn(t.ctx,e.textDirection)}drawTitle(){const t=this,e=t.options,i=e.title,s=Ee(i.font),a=Re(i.padding);if(!i.display)return;const r=fn(e.rtl,t.left,t.width),l=t.ctx,c=i.position,h=s.size/2,d=a.top+h;let u,f=t.left,g=t.width;if(this.isHorizontal())g=Math.max(...t.lineWidths),u=t.top+d,f=o(e.align,f,t.right-g);else{const i=t.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);u=d+o(e.align,t.top,t.bottom-i-e.labels.padding-t._computeTitleHeight())}const p=o(c,f,f+g);l.textAlign=r.textAlign(n(c)),l.textBaseline="middle",l.strokeStyle=i.color,l.fillStyle=i.color,l.font=s.string,te(l,i.text,p,u,s)}_computeTitleHeight(){const t=this.options.title,e=Ee(t.font),i=Re(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){const i=this;let n,o,s;if(t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom)for(s=i.legendHitBoxes,n=0;n=o.left&&t<=o.left+o.width&&e>=o.top&&e<=o.top+o.height)return i.legendItems[n];return null}handleEvent(t){const e=this,i=e.options;if(!function(t,e){if("mousemove"===t&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,i))return;const n=e._getLegendItemAt(t.x,t.y);if("mousemove"===t.type){const a=e._hoveredItem,r=(s=n,null!==(o=a)&&null!==s&&o.datasetIndex===s.datasetIndex&&o.index===s.index);a&&!r&&Q(i.onLeave,[t,a,e],e),e._hoveredItem=n,n&&!r&&Q(i.onHover,[t,n,e],e)}else n&&Q(i.onClick,[t,n,e],e);var o,s}}var es={id:"legend",_element:ts,start(t,e,i){const n=t.legend=new ts({ctx:t.ctx,options:i,chart:t});Xe.configure(t,n,i),Xe.addBox(t,n)},stop(t){Xe.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const n=t.legend;Xe.configure(t,n,i),n.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const n=e.datasetIndex,o=i.chart;o.isDatasetVisible(n)?(o.hide(n),e.hidden=!0):(o.show(n),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:n,textAlign:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const s=t.controller.getStyle(i?0:void 0),a=Re(s.borderWidth);return{text:e[t.index].label,fillStyle:s.backgroundColor,hidden:!t.visible,lineCap:s.borderCapStyle,lineDash:s.borderDash,lineDashOffset:s.borderDashOffset,lineJoin:s.borderJoinStyle,lineWidth:(a.width+a.height)/4,strokeStyle:s.borderColor,pointStyle:n||s.pointStyle,rotation:s.rotation,textAlign:o||s.textAlign,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class is extends Oi{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this,n=i.options;if(i.left=0,i.top=0,!n.display)return void(i.width=i.height=i.right=i.bottom=0);i.width=i.right=t,i.height=i.bottom=e;const o=Y(n.text)?n.text.length:1;i._padding=Re(n.padding);const s=o*Ee(n.font).lineHeight+i._padding.height;i.isHorizontal()?i.height=s:i.width=s}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:n,right:s,options:a}=this,r=a.align;let l,c,h,d=0;return this.isHorizontal()?(c=o(r,i,s),h=e+t,l=s-i):("left"===a.position?(c=i+t,h=o(r,n,e),d=-.5*xt):(c=s-t,h=o(r,e,n),d=.5*xt),l=n-e),{titleX:c,titleY:h,maxWidth:l,rotation:d}}draw(){const t=this,e=t.ctx,i=t.options;if(!i.display)return;const o=Ee(i.font),s=o.lineHeight/2+t._padding.top,{titleX:a,titleY:r,maxWidth:l,rotation:c}=t._drawArgs(s);te(e,i.text,0,0,o,{color:i.color,maxWidth:l,rotation:c,textAlign:n(i.align),textBaseline:"middle",translation:[a,r]})}}var ns={id:"title",_element:is,start(t,e,i){!function(t,e){const i=new is({ctx:t.ctx,options:e,chart:t});Xe.configure(t,i,e),Xe.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;Xe.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const n=t.titleBlock;Xe.configure(t,n,i),n.options=i},defaults:{align:"center",display:!1,font:{style:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const os={average(t){if(!t.length)return!1;let e,i,n=0,o=0,s=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function rs(t,e){const{element:i,datasetIndex:n,index:o}=e,s=t.getDatasetMeta(n).controller,{label:a,value:r}=s.getLabelAndValue(o);return{chart:t,label:a,parsed:s.getParsed(o),raw:t.data.datasets[n].data[o],formattedValue:r,dataset:s.getDataset(),dataIndex:o,datasetIndex:n,element:i}}function ls(t,e){const i=t._chart.ctx,{body:n,footer:o,title:s}=t,{boxWidth:a,boxHeight:r}=e,l=Ee(e.bodyFont),c=Ee(e.titleFont),h=Ee(e.footerFont),d=s.length,u=o.length,f=n.length,g=Re(e.padding);let p=g.height,m=0,x=n.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*c.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*h.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=c.string,J(t.title,_),i.font=l.string,J(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2:0,J(n,(t=>{J(t.before,_),J(t.lines,_),J(t.after,_)})),b=0,i.font=h.string,J(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function cs(t,e,i,n){const{x:o,width:s}=i,{width:a,chartArea:{left:r,right:l}}=t;let c="center";return"center"===n?c=o<=(r+l)/2?"left":"right":o<=s/2?c="left":o>=a-s/2&&(c="right"),function(t,e,i,n){const{x:o,width:s}=n,a=i.caretSize+i.caretPadding;return"left"===t&&o+s+a>e.width||"right"===t&&o-s-a<0||void 0}(c,t,e,i)&&(c="center"),c}function hs(t,e,i){const n=e.yAlign||function(t,e){const{y:i,height:n}=e;return it.height-n/2?"bottom":"center"}(t,i);return{xAlign:e.xAlign||cs(t,e,i,n),yAlign:n}}function ds(t,e,i,n){const{caretSize:o,caretPadding:s,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,c=o+s,h=a+s;let d=function(t,e){let{x:i,width:n}=t;return"right"===e?i-=n:"center"===e&&(i-=n/2),i}(e,r);const u=function(t,e,i){let{y:n,height:o}=t;return"top"===e?n+=i:n-="bottom"===e?o+i:o/2,n}(e,l,c);return"center"===l?"left"===r?d+=c:"right"===r&&(d-=c):"left"===r?d-=h:"right"===r&&(d+=h),{x:Ht(d,0,n.width-e.width),y:Ht(u,0,n.height-e.height)}}function us(t,e,i){const n=Re(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-n.right:t.x+n.left}function fs(t){return ss([],as(t))}function gs(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class ps extends Oi{constructor(t){super(),this.opacity=0,this._active=[],this._chart=t._chart,this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this,e=t._cachedAnimations;if(e)return e;const i=t._chart,n=t.options.setContext(t.getContext()),o=n.enabled&&i.options.animation&&n.animations,s=new bi(t._chart,o);return o._cacheable&&(t._cachedAnimations=Object.freeze(s)),s}getContext(){const t=this;return t.$context||(t.$context=(e=t._chart.getContext(),i=t,n=t._tooltipItems,Object.assign(Object.create(e),{tooltip:i,tooltipItems:n,type:"tooltip"})));var e,i,n}getTitle(t,e){const i=this,{callbacks:n}=e,o=n.beforeTitle.apply(i,[t]),s=n.title.apply(i,[t]),a=n.afterTitle.apply(i,[t]);let r=[];return r=ss(r,as(o)),r=ss(r,as(s)),r=ss(r,as(a)),r}getBeforeBody(t,e){return fs(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const i=this,{callbacks:n}=e,o=[];return J(t,(t=>{const e={before:[],lines:[],after:[]},s=gs(n,t);ss(e.before,as(s.beforeLabel.call(i,t))),ss(e.lines,s.label.call(i,t)),ss(e.after,as(s.afterLabel.call(i,t))),o.push(e)})),o}getAfterBody(t,e){return fs(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const i=this,{callbacks:n}=e,o=n.beforeFooter.apply(i,[t]),s=n.footer.apply(i,[t]),a=n.afterFooter.apply(i,[t]);let r=[];return r=ss(r,as(o)),r=ss(r,as(s)),r=ss(r,as(a)),r}_createItems(t){const e=this,i=e._active,n=e._chart.data,o=[],s=[],a=[];let r,l,c=[];for(r=0,l=i.length;rt.filter(e,i,o,n)))),t.itemSort&&(c=c.sort(((e,i)=>t.itemSort(e,i,n)))),J(c,(i=>{const n=gs(t.callbacks,i);o.push(n.labelColor.call(e,i)),s.push(n.labelPointStyle.call(e,i)),a.push(n.labelTextColor.call(e,i))})),e.labelColors=o,e.labelPointStyles=s,e.labelTextColors=a,e.dataPoints=c,c}update(t,e){const i=this,n=i.options.setContext(i.getContext()),o=i._active;let s,a=[];if(o.length){const t=os[n.position].call(i,o,i._eventPosition);a=i._createItems(n),i.title=i.getTitle(a,n),i.beforeBody=i.getBeforeBody(a,n),i.body=i.getBody(a,n),i.afterBody=i.getAfterBody(a,n),i.footer=i.getFooter(a,n);const e=i._size=ls(i,n),r=Object.assign({},t,e),l=hs(i._chart,n,r),c=ds(n,r,l,i._chart);i.xAlign=l.xAlign,i.yAlign=l.yAlign,s={opacity:1,x:c.x,y:c.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==i.opacity&&(s={opacity:0});i._tooltipItems=a,i.$context=void 0,s&&i._resolveAnimations().update(i,s),t&&n.external&&n.external.call(i,{chart:i._chart,tooltip:i,replay:e})}drawCaret(t,e,i,n){const o=this.getCaretPosition(t,i,n);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,i){const{xAlign:n,yAlign:o}=this,{cornerRadius:s,caretSize:a}=i,{x:r,y:l}=t,{width:c,height:h}=e;let d,u,f,g,p,m;return"center"===o?(p=l+h/2,"left"===n?(d=r,u=d-a,g=p+a,m=p-a):(d=r+c,u=d+a,g=p-a,m=p+a),f=d):(u="left"===n?r+s+a:"right"===n?r+c-s-a:this.caretX,"top"===o?(g=l,p=g-a,d=u-a,f=u+a):(g=l+h,p=g+a,d=u+a,f=u-a),m=g),{x1:d,x2:u,x3:f,y1:g,y2:p,y3:m}}drawTitle(t,e,i){const n=this,o=n.title,s=o.length;let a,r,l;if(s){const c=fn(i.rtl,n.x,n.width);for(t.x=us(n,i.titleAlign,i),e.textAlign=c.textAlign(i.titleAlign),e.textBaseline="middle",a=Ee(i.titleFont),r=i.titleSpacing,e.fillStyle=i.titleColor,e.font=a.string,l=0;l0&&e.stroke()}_updateAnimationTarget(t){const e=this,i=e._chart,n=e.$animations,o=n&&n.x,s=n&&n.y;if(o||s){const n=os[t.position].call(e,e._active,e._eventPosition);if(!n)return;const a=e._size=ls(e,t),r=Object.assign({},n,e._size),l=hs(i,t,r),c=ds(t,r,l,i);o._to===c.x&&s._to===c.y||(e.xAlign=l.xAlign,e.yAlign=l.yAlign,e.width=a.width,e.height=a.height,e.caretX=n.x,e.caretY=n.y,e._resolveAnimations().update(e,c))}}draw(t){const e=this,i=e.options.setContext(e.getContext());let n=e.opacity;if(!n)return;e._updateAnimationTarget(i);const o={width:e.width,height:e.height},s={x:e.x,y:e.y};n=Math.abs(n)<.001?0:n;const a=Re(i.padding),r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;i.enabled&&r&&(t.save(),t.globalAlpha=n,e.drawBackground(s,t,o,i),gn(t,i.textDirection),s.y+=a.top,e.drawTitle(s,t,i),e.drawBody(s,t,i),e.drawFooter(s,t,i),pn(t,i.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this,n=i._active,o=t.map((({datasetIndex:t,index:e})=>{const n=i._chart.getDatasetMeta(t);if(!n)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:n.data[e],index:e}})),s=!tt(n,o),a=i._positionChanged(o,e);(s||a)&&(i._active=o,i._eventPosition=e,i.update(!0))}handleEvent(t,e){const i=this,n=i.options,o=i._active||[];let s=!1,a=[];"mouseout"!==t.type&&(a=i._chart.getElementsAtEventForMode(t,n.mode,n,e),n.reverse&&a.reverse());const r=i._positionChanged(a,t);return s=e||!tt(a,o)||r,s&&(i._active=a,(n.enabled||n.external)&&(i._eventPosition={x:t.x,y:t.y},i.update(!0,e))),s}_positionChanged(t,e){const i=this,n=os[i.options.position].call(i,t,e);return i.caretX!==n.x||i.caretY!==n.y}}ps.positioners=os;var ms={id:"tooltip",_element:ps,positioners:os,afterInit(t,e,i){i&&(t.tooltip=new ps({_chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins("beforeTooltipDraw",i)&&(e&&e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{style:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{style:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:N,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,n=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(n>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},xs=Object.freeze({__proto__:null,Decimation:Fo,Filler:Qo,Legend:es,Title:ns,Tooltip:ms});function bs(t,e,i){const n=t.indexOf(e);if(-1===n)return((t,e,i)=>"string"==typeof e?t.push(e)-1:isNaN(e)?null:i)(t,e,i);return n!==t.lastIndexOf(e)?i:n}class _s extends ji{constructor(t){super(t),this._startValue=void 0,this._valueRange=0}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Ht(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:bs(i,t,K(e,t)),i.length-1)}determineDataLimits(){const t=this,{minDefined:e,maxDefined:i}=t.getUserBounds();let{min:n,max:o}=t.getMinMax(!0);"ticks"===t.options.bounds&&(e||(n=0),i||(o=t.getLabels().length-1)),t.min=n,t.max=o}buildTicks(){const t=this,e=t.min,i=t.max,n=t.options.offset,o=[];let s=t.getLabels();s=0===e&&i===s.length-1?s:s.slice(e,i+1),t._valueRange=Math.max(s.length-(n?0:1),1),t._startValue=t.min-(n?.5:0);for(let t=e;t<=i;t++)o.push({value:t});return o}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){const e=this;return Math.round(e._startValue+e.getDecimalForPixel(t)*e._valueRange)}getBasePixel(){return this.bottom}}_s.id="category",_s.defaults={ticks:{callback:_s.prototype.getLabelForValue}};class ys extends ji{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const t=this,{beginAtZero:e,stacked:i}=t.options,{minDefined:n,maxDefined:o}=t.getUserBounds();let{min:s,max:a}=t;const r=t=>s=n?s:t,l=t=>a=o?a:t;if(e||i){const t=Pt(s),e=Pt(a);t<0&&e<0?l(0):t>0&&e>0&&r(0)}s===a&&(l(a+1),e||r(s-1)),t.min=s,t.max=a}getTickLimit(){const t=this,e=t.options.ticks;let i,{maxTicksLimit:n,stepSize:o}=e;return o?i=Math.ceil(t.max/o)-Math.floor(t.min/o)+1:(i=t.computeTickLimit(),n=n||11),n&&(i=Math.min(n,i)),i}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this,e=t.options,i=e.ticks;let n=t.getTickLimit();n=Math.max(2,n);const o=function(t,e){const i=[],{step:n,min:o,max:s,precision:a,count:r,maxTicks:l}=t,c=n||1,h=l-1,{min:d,max:u}=e,f=!$(o),g=!$(s),p=!$(r);let m,x,b,_,y=Dt((u-d)/h/c)*c;if(y<1e-14&&!f&&!g)return[{value:d},{value:u}];_=Math.ceil(u/y)-Math.floor(d/y),_>h&&(y=Dt(_*y/h/c)*c),$(a)||(m=Math.pow(10,a),y=Math.ceil(y*m)/m),x=Math.floor(d/y)*y,b=Math.ceil(u/y)*y,f&&g&&n&&Tt((s-o)/n,y/1e3)?(_=Math.min((s-o)/y,l),y=(s-o)/_,x=o,b=s):p?(x=f?o:x,b=g?s:b,_=r-1,y=(b-x)/_):(_=(b-x)/y,_=Ot(_,Math.round(_),y/1e3)?Math.round(_):Math.ceil(_)),m=Math.pow(10,$(a)?It(y):a),x=Math.round(x*m)/m,b=Math.round(b*m)/m;let v=0;for(f&&(i.push({value:o}),x<=o&&v++,Ot(Math.round((x+v*y)*m)/m,o,y/10)&&v++);v<_;++v)i.push({value:Math.round((x+v*y)*m)/m});return g?Ot(i[i.length-1].value,s,y/10)?i[i.length-1].value=s:i.push({value:s}):i.push({value:b}),i}({maxTicks:n,min:e.min,max:e.max,precision:i.precision,step:i.stepSize,count:i.count},Fe(t,e.grace));return"ticks"===e.bounds&&Lt(o,t,"value"),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),o}configure(){const t=this,e=t.ticks;let i=t.min,n=t.max;if(super.configure(),t.options.offset&&e.length){const t=(n-i)/Math.max(e.length-1,1)/2;i-=t,n+=t}t._startValue=i,t._endValue=n,t._valueRange=n-i}getLabelForValue(t){return Li(t,this.chart.options.locale)}}class vs extends ys{determineDataLimits(){const t=this,{min:e,max:i}=t.getMinMax(!0);t.min=X(e)?e:0,t.max=X(i)?i:1,t.handleTickRangeOptions()}computeTickLimit(){const t=this;if(t.isHorizontal())return Math.ceil(t.width/40);const e=t._resolveTickFontOptions(0);return Math.ceil(t.height/e.lineHeight)}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}function Ms(t){return 1===t/Math.pow(10,Math.floor(St(t)))}vs.id="linear",vs.defaults={ticks:{callback:Ei.formatters.numeric}};class ws extends ji{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=ys.prototype.parse.apply(this,[t,e]);if(0!==i)return X(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const t=this,{min:e,max:i}=t.getMinMax(!0);t.min=X(e)?Math.max(0,e):null,t.max=X(i)?Math.max(0,i):null,t.options.beginAtZero&&(t._zero=!0),t.handleTickRangeOptions()}handleTickRangeOptions(){const t=this,{minDefined:e,maxDefined:i}=t.getUserBounds();let n=t.min,o=t.max;const s=t=>n=e?n:t,a=t=>o=i?o:t,r=(t,e)=>Math.pow(10,Math.floor(St(t))+e);n===o&&(n<=0?(s(1),a(10)):(s(r(n,-1)),a(r(o,1)))),n<=0&&s(r(o,-1)),o<=0&&a(r(n,1)),t._zero&&t.min!==t._suggestedMin&&n===r(t.min,0)&&s(r(n,-1)),t.min=n,t.max=o}buildTicks(){const t=this,e=t.options,i=function(t,e){const i=Math.floor(St(e.max)),n=Math.ceil(e.max/Math.pow(10,i)),o=[];let s=q(t.min,Math.pow(10,Math.floor(St(e.min)))),a=Math.floor(St(s)),r=Math.floor(s/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{o.push({value:s,major:Ms(s)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),s=Math.round(r*Math.pow(10,a)*l)/l}while(ao?{start:e-i,end:e}:{start:e,end:e+i}}function Ps(t){return 0===t||180===t?"center":t<180?"left":"right"}function Ds(t,e,i){90===t||270===t?i.y-=e.h/2:(t>270||t<90)&&(i.y-=e.h)}function Cs(t,e,i,n){const{ctx:o}=t;if(i)o.arc(t.xCenter,t.yCenter,e,0,bt);else{let i=t.getPointPosition(0,e);o.moveTo(i.x,i.y);for(let s=1;s{const n=Q(e.options.pointLabels.callback,[t,i],e);return n||0===n?n:""}))}fit(){const t=this,e=t.options;e.display&&e.pointLabels.display?function(t){const e={l:0,r:t.width,t:0,b:t.height-t.paddingTop},i={};let n,o,s;const a=[],r=[],l=t.getLabels().length;for(n=0;ne.r&&(e.r=p.end,i.r=f),m.starte.b&&(e.b=m.end,i.b=f)}var c,h,d;t._setReductions(t.drawingArea,e,i),t._pointLabelItems=[];const u=t.options,f=ks(u),g=t.getDistanceFromCenterForValue(u.ticks.reverse?t.min:t.max);for(n=0;n=0;o--){const e=n.setContext(t.getContext(o)),s=Ee(e.font),{x:a,y:r,textAlign:l,left:c,top:h,right:d,bottom:u}=t._pointLabelItems[o],{backdropColor:f}=e;if(!$(f)){const t=Re(e.backdropPadding);i.fillStyle=f,i.fillRect(c-t.left,h-t.top,d-c+t.width,u-h+t.height)}te(i,t._pointLabels[o],a,r+s.lineHeight/2,s,{color:e.color,textAlign:l,textBaseline:"middle"})}}(t,s),o.display&&t.ticks.forEach(((e,i)=>{if(0!==i){r=t.getDistanceFromCenterForValue(e.value);const n=o.setContext(t.getContext(i-1));!function(t,e,i,n){const o=t.ctx,s=e.circular,{color:a,lineWidth:r}=e;!s&&!n||!a||!r||i<0||(o.save(),o.strokeStyle=a,o.lineWidth=r,o.setLineDash(e.borderDash),o.lineDashOffset=e.borderDashOffset,o.beginPath(),Cs(t,i,s,n),o.closePath(),o.stroke(),o.restore())}(t,n,r,s)}})),n.display){for(e.save(),a=t.getLabels().length-1;a>=0;a--){const o=n.setContext(t.getContext(a)),{color:s,lineWidth:c}=o;c&&s&&(e.lineWidth=c,e.strokeStyle=s,e.setLineDash(o.borderDash),e.lineDashOffset=o.borderDashOffset,r=t.getDistanceFromCenterForValue(i.ticks.reverse?t.min:t.max),l=t.getPointPosition(a,r),e.beginPath(),e.moveTo(t.xCenter,t.yCenter),e.lineTo(l.x,l.y),e.stroke())}e.restore()}}drawLabels(){const t=this,e=t.ctx,i=t.options,n=i.ticks;if(!n.display)return;const o=t.getIndexAngle(0);let s,a;e.save(),e.translate(t.xCenter,t.yCenter),e.rotate(o),e.textAlign="center",e.textBaseline="middle",t.ticks.forEach(((o,r)=>{if(0===r&&!i.reverse)return;const l=n.setContext(t.getContext(r)),c=Ee(l.font);if(s=t.getDistanceFromCenterForValue(t.ticks[r].value),l.showLabelBackdrop){a=e.measureText(o.label).width,e.fillStyle=l.backdropColor;const t=Re(l.backdropPadding);e.fillRect(-a/2-t.left,-s-c.size/2-t.top,a+t.width,c.size+t.height)}te(e,o.label,0,-s,c,{color:l.color})})),e.restore()}drawTitle(){}}Os.id="radialLinear",Os.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPadding:2,callback:Ei.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5}},Os.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},Os.descriptors={angleLines:{_fallback:"grid"}};const Ts={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Ls=Object.keys(Ts);function Rs(t,e){return t-e}function Es(t,e){if($(e))return null;const i=t._adapter,n=t.options.time,{parser:o,round:s,isoWeekday:a}=n;let r=e;return"function"==typeof o&&(r=o(r)),X(r)||(r="string"==typeof o?i.parse(r,o):i.parse(r)),null===r?null:(s&&(r="week"!==s||!At(a)&&!0!==a?i.startOf(r,s):i.startOf(r,"isoWeek",a)),+r)}function Is(t,e,i,n){const o=Ls.length;for(let s=Ls.indexOf(t);s=e?i[n]:i[o]]=!0}}else t[e]=!0}function zs(t,e,i){const n=[],o={},s=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,n,o,i):n}class Vs extends ji{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1}init(t,e){const i=t.time||(t.time={}),n=this._adapter=new Gn._date(t.adapters.date);st(i.displayFormats,n.formats()),super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Es(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this,e=t.options,i=t._adapter,n=e.time.unit||"day";let{min:o,max:s,minDefined:a,maxDefined:r}=t.getUserBounds();function l(t){a||isNaN(t.min)||(o=Math.min(o,t.min)),r||isNaN(t.max)||(s=Math.max(s,t.max))}a&&r||(l(t._getLabelBounds()),"ticks"===e.bounds&&"labels"===e.ticks.source||l(t.getMinMax(!1))),o=X(o)&&!isNaN(o)?o:+i.startOf(Date.now(),n),s=X(s)&&!isNaN(s)?s:+i.endOf(Date.now(),n)+1,t.min=Math.min(o,s-1),t.max=Math.max(o+1,s)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this,e=t.options,i=e.time,n=e.ticks,o="labels"===n.source?t.getLabelTimestamps():t._generate();"ticks"===e.bounds&&o.length&&(t.min=t._userMin||o[0],t.max=t._userMax||o[o.length-1]);const s=t.min,a=oe(o,s,t.max);return t._unit=i.unit||(n.autoSkip?Is(i.minUnit,t.min,t.max,t._getLabelCapacity(s)):function(t,e,i,n,o){for(let s=Ls.length-1;s>=Ls.indexOf(i);s--){const i=Ls[s];if(Ts[i].common&&t._adapter.diff(o,n,i)>=e-1)return i}return Ls[i?Ls.indexOf(i):0]}(t,a.length,i.minUnit,t.min,t.max)),t._majorUnit=n.major.enabled&&"year"!==t._unit?function(t){for(let e=Ls.indexOf(t)+1,i=Ls.length;e1e5*r)throw new Error(i+" and "+n+" are too far apart with stepSize of "+r+" "+a);const g="data"===o.ticks.source&&t.getDataTimestamps();for(d=f,u=0;dt-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,n){const o=this,s=o.options,a=s.time.displayFormats,r=o._unit,l=o._majorUnit,c=r&&a[r],h=l&&a[l],d=i[e],u=l&&h&&d&&d.major,f=o._adapter.format(t,n||(u?h:c)),g=s.ticks.callback;return g?g(f,e,i):f}generateTickLabels(t){let e,i,n;for(e=0,i=t.length;e0?r:1}getDataTimestamps(){const t=this;let e,i,n=t._cache.data||[];if(n.length)return n;const o=t.getMatchingVisibleMetas();if(t._normalized&&o.length)return t._cache.data=o[0].controller.getAllParsedValues(t);for(e=0,i=o.length;ee&&a0&&!$(e)?e/i._maxIndex:i.getDecimalForValue(t);return i.getPixelForDecimal((n.start+o)*n.factor)}getDecimalForValue(t){return Bs(this._table,t)/this._maxIndex}getValueForPixel(t){const e=this,i=e._offsets,n=e.getDecimalForPixel(t)/i.factor-i.end;return Bs(e._table,n*this._maxIndex,!0)}}Ws.id="timeseries",Ws.defaults=Vs.defaults;var Hs=Object.freeze({__proto__:null,CategoryScale:_s,LinearScale:vs,LogarithmicScale:ws,RadialLinearScale:Os,TimeScale:Vs,TimeSeriesScale:Ws});return Yn.register(co,Hs,Eo,xs),Yn.helpers={...vn},Yn._adapters=Gn,Yn.Animation=mi,Yn.Animations=bi,Yn.animator=a,Yn.controllers=wn.controllers.items,Yn.DatasetController=Ai,Yn.Element=Oi,Yn.elements=Eo,Yn.Interaction=De,Yn.layouts=Xe,Yn.platforms=ci,Yn.Scale=ji,Yn.Ticks=Ei,Object.assign(Yn,co,Hs,Eo,xs,ci),Yn.Chart=Yn,"undefined"!=typeof window&&(window.Chart=Yn),Yn})); diff --git a/InvenTree/InvenTree/static/script/chartjs-adapter-moment.js b/InvenTree/InvenTree/static/script/chartjs-adapter-moment.js new file mode 100644 index 0000000000..d9c08cc853 --- /dev/null +++ b/InvenTree/InvenTree/static/script/chartjs-adapter-moment.js @@ -0,0 +1,8 @@ +/*! + * chartjs-adapter-moment v1.0.0 + * https://www.chartjs.org + * (c) 2021 chartjs-adapter-moment Contributors + * Released under the MIT license + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("moment"),require("chart.js")):"function"==typeof define&&define.amd?define(["moment","chart.js"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).moment,e.Chart)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=n(e);const a={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};t._adapters._date.override("function"==typeof f.default?{_id:"moment",formats:function(){return a},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=f.default(e,t):e instanceof f.default||(e=f.default(e)),e.isValid()?e.valueOf():null},format:function(e,t){return f.default(e).format(t)},add:function(e,t,n){return f.default(e).add(t,n).valueOf()},diff:function(e,t,n){return f.default(e).diff(f.default(t),n)},startOf:function(e,t,n){return e=f.default(e),"isoWeek"===t?(n=Math.trunc(Math.min(Math.max(0,n),6)),e.isoWeekday(n).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return f.default(e).endOf(t).valueOf()}}:{})})); +//# sourceMappingURL=chartjs-adapter-moment.min.js.map diff --git a/InvenTree/InvenTree/static/script/moment.js b/InvenTree/InvenTree/static/script/moment.js index 3ec9e9a787..e5c2b138fe 100644 --- a/InvenTree/InvenTree/static/script/moment.js +++ b/InvenTree/InvenTree/static/script/moment.js @@ -1,14380 +1,15 @@ -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - global.moment = factory() -}(this, (function () { 'use strict'; - - var hookCallback; - - function hooks () { - return hookCallback.apply(null, arguments); - } - - // This is done to register the method called with moment() - // without creating circular dependencies. - function setHookCallback (callback) { - hookCallback = callback; - } - - function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; - } - - function isObject(input) { - // IE8 will treat undefined and null as object if it wasn't for - // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; - } - - function isObjectEmpty(obj) { - if (Object.getOwnPropertyNames) { - return (Object.getOwnPropertyNames(obj).length === 0); - } else { - var k; - for (k in obj) { - if (obj.hasOwnProperty(k)) { - return false; - } - } - return true; - } - } - - function isUndefined(input) { - return input === void 0; - } - - function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; - } - - function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; - } - - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } - - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } - - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } - - return a; - } - - function createUTC (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, true).utc(); - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false - }; - } - - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); - } - return m._pf; - } - - var some; - if (Array.prototype.some) { - some = Array.prototype.some; - } else { - some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; - - for (var i = 0; i < len; i++) { - if (i in t && fun.call(this, t[i], i, t)) { - return true; - } - } - - return false; - }; - } - - function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - - if (m._strict) { - isNowValid = isNowValid && - flags.charsLeftOver === 0 && - flags.unusedTokens.length === 0 && - flags.bigHour === undefined; - } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } - else { - return isNowValid; - } - } - return m._isValid; - } - - function createInvalid (flags) { - var m = createUTC(NaN); - if (flags != null) { - extend(getParsingFlags(m), flags); - } - else { - getParsingFlags(m).userInvalidated = true; - } - - return m; - } - - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - var momentProperties = hooks.momentProperties = []; - - function copyConfig(to, from) { - var i, prop, val; - - if (!isUndefined(from._isAMomentObject)) { - to._isAMomentObject = from._isAMomentObject; - } - if (!isUndefined(from._i)) { - to._i = from._i; - } - if (!isUndefined(from._f)) { - to._f = from._f; - } - if (!isUndefined(from._l)) { - to._l = from._l; - } - if (!isUndefined(from._strict)) { - to._strict = from._strict; - } - if (!isUndefined(from._tzm)) { - to._tzm = from._tzm; - } - if (!isUndefined(from._isUTC)) { - to._isUTC = from._isUTC; - } - if (!isUndefined(from._offset)) { - to._offset = from._offset; - } - if (!isUndefined(from._pf)) { - to._pf = getParsingFlags(from); - } - if (!isUndefined(from._locale)) { - to._locale = from._locale; - } - - if (momentProperties.length > 0) { - for (i = 0; i < momentProperties.length; i++) { - prop = momentProperties[i]; - val = from[prop]; - if (!isUndefined(val)) { - to[prop] = val; - } - } - } - - return to; - } - - var updateInProgress = false; - - // Moment prototype object - function Moment(config) { - copyConfig(this, config); - this._d = new Date(config._d != null ? config._d.getTime() : NaN); - if (!this.isValid()) { - this._d = new Date(NaN); - } - // Prevent infinite loop in case updateOffset creates new moment - // objects. - if (updateInProgress === false) { - updateInProgress = true; - hooks.updateOffset(this); - updateInProgress = false; - } - } - - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - function absFloor (number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } - - function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - var deprecations = {}; - - function deprecateSimple(name, msg) { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(name, msg); - } - if (!deprecations[name]) { - warn(msg); - deprecations[name] = true; - } - } - - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; - - function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; - } - - function set (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; - } - } - this._config = config; - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. - // TODO: Remove "ordinalParse" fallback in next major release. - this._dayOfMonthOrdinalParseLenient = new RegExp( - (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); - } - - function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; - for (prop in childConfig) { - if (hasOwnProp(childConfig, prop)) { - if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { - res[prop] = {}; - extend(res[prop], parentConfig[prop]); - extend(res[prop], childConfig[prop]); - } else if (childConfig[prop] != null) { - res[prop] = childConfig[prop]; - } else { - delete res[prop]; - } - } - } - for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { - // make sure changes to properties don't modify parent config - res[prop] = extend({}, res[prop]); - } - } - return res; - } - - function Locale(config) { - if (config != null) { - this.set(config); - } - } - - var keys; - - if (Object.keys) { - keys = Object.keys; - } else { - keys = function (obj) { - var i, res = []; - for (i in obj) { - if (hasOwnProp(obj, i)) { - res.push(i); - } - } - return res; - }; - } - - var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }; - - function calendar (key, mom, now) { - var output = this._calendar[key] || this._calendar['sameElse']; - return isFunction(output) ? output.call(mom, now) : output; - } - - var defaultLongDateFormat = { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - var defaultRelativeTime = { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return isFunction(format) ? format(output) : format.replace(/%s/i, output); - } - - var aliases = {}; - - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } - - function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } - - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } - - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; - - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ''); - } - return input.replace(/\\/g, ''); - } - - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; - - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); - } - } - - return function (mom) { - var output = '', i; - for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; - } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - if (!m.isValid()) { - return m.localeData().invalidDate(); - } - - format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); - - return formatFunctions[format](m); - } - - function expandFormat(format, locale) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return locale.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - - return format; - } - - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match3to4 = /\d\d\d\d?/; // 999 - 9999 - var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf - - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z - - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 - - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; - - var regexes = {}; - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } - - return regexes[token](config._strict, config._locale); - } - - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); - } - - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } - - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); - } - - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } - - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - var WEEK = 7; - var WEEKDAY = 8; - - // FORMATTING - - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; - }); - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PRIORITIES - - addUnitPriority('year', 1); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', true); - - function getIsLeapYear () { - return isLeapYear(this.year()); - } - - function makeGetSet (unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; - } - - function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; - } - - function set$1 (mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); - } - else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - } - - // MOMENTS - - function stringGet (units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } - - - function stringSet (units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } - - function mod(n, x) { - return ((n % x) + x) % x; - } - - var indexOf; - - if (Array.prototype.indexOf) { - indexOf = Array.prototype.indexOf; - } else { - indexOf = function (o) { - // I know - var i; - for (i = 0; i < this.length; ++i) { - if (this[i] === o) { - return i; - } - } - return -1; - }; - } - - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PRIORITY - - addUnitPriority('month', 8); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); - }); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - // LOCALES - - var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m, format) { - if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; - } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; - } - - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m, format) { - if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; - } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; - } - - function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); - if (!this._monthsParse) { - // this is not used - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - for (i = 0; i < 12; ++i) { - mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); - this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'MMM') { - ii = indexOf.call(this._shortMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._longMonthsParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._longMonthsParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortMonthsParse, llc); - return ii !== -1 ? ii : null; - } - } - } - - function localeMonthsParse (monthName, format, strict) { - var i, mom, regex; - - if (this._monthsParseExact) { - return handleStrictParse.call(this, monthName, format, strict); - } - - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } - - // TODO: add sorting - // Sorting makes sure if one month (or abbr) is a prefix of another - // see sorting in computeMonthsParse - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } - } - } - - // MOMENTS - - function setMonth (mom, value) { - var dayOfMonth; - - if (!mom.isValid()) { - // No op - return mom; - } - - if (typeof value === 'string') { - if (/^\d+$/.test(value)) { - value = toInt(value); - } else { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (!isNumber(value)) { - return mom; - } - } - } - - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } - - function getSetMonth (value) { - if (value != null) { - setMonth(this, value); - hooks.updateOffset(this, true); - return this; - } else { - return get(this, 'Month'); - } - } - - function getDaysInMonth () { - return daysInMonth(this.year(), this.month()); - } - - var defaultMonthsShortRegex = matchWord; - function monthsShortRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsShortStrictRegex; - } else { - return this._monthsShortRegex; - } - } else { - if (!hasOwnProp(this, '_monthsShortRegex')) { - this._monthsShortRegex = defaultMonthsShortRegex; - } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; - } - } - - var defaultMonthsRegex = matchWord; - function monthsRegex (isStrict) { - if (this._monthsParseExact) { - if (!hasOwnProp(this, '_monthsRegex')) { - computeMonthsParse.call(this); - } - if (isStrict) { - return this._monthsStrictRegex; - } else { - return this._monthsRegex; - } - } else { - if (!hasOwnProp(this, '_monthsRegex')) { - this._monthsRegex = defaultMonthsRegex; - } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; - } - } - - function computeMonthsParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); - } - // Sorting makes sure if one month (or abbr) is a prefix of another it - // will match the longer piece. - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - } - - function createDate (y, m, d, h, M, s, ms) { - // can't just apply() to create a date: - // https://stackoverflow.com/q/181348 - var date = new Date(y, m, d, h, M, s, ms); - - // the date constructor remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { - date.setFullYear(y); - } - return date; - } - - function createUTCDate (y) { - var date = new Date(Date.UTC.apply(null, arguments)); - - // the Date.UTC function remaps years 0-99 to 1900-1999 - if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { - date.setUTCFullYear(y); - } - return date; - } - - // start-of-first-week - start-of-year - function firstWeekOffset(year, dow, doy) { - var // first-week day -- which january is always in the first week (4 for iso, 1 for other) - fwd = 7 + dow - doy, - // first-week day local weekday -- which local weekday is fwd - fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; - - return -fwdlw + fwd - 1; - } - - // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, dow, doy) { - var localWeekday = (7 + weekday - dow) % 7, - weekOffset = firstWeekOffset(year, dow, doy), - dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; - - if (dayOfYear <= 0) { - resYear = year - 1; - resDayOfYear = daysInYear(resYear) + dayOfYear; - } else if (dayOfYear > daysInYear(year)) { - resYear = year + 1; - resDayOfYear = dayOfYear - daysInYear(year); - } else { - resYear = year; - resDayOfYear = dayOfYear; - } - - return { - year: resYear, - dayOfYear: resDayOfYear - }; - } - - function weekOfYear(mom, dow, doy) { - var weekOffset = firstWeekOffset(mom.year(), dow, doy), - week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; - - if (week < 1) { - resYear = mom.year() - 1; - resWeek = week + weeksInYear(resYear, dow, doy); - } else if (week > weeksInYear(mom.year(), dow, doy)) { - resWeek = week - weeksInYear(mom.year(), dow, doy); - resYear = mom.year() + 1; - } else { - resYear = mom.year(); - resWeek = week; - } - - return { - week: resWeek, - year: resYear - }; - } - - function weeksInYear(year, dow, doy) { - var weekOffset = firstWeekOffset(year, dow, doy), - weekOffsetNext = firstWeekOffset(year + 1, dow, doy); - return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; - } - - // FORMATTING - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PRIORITIES - - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); - - // PARSING - - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); - - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); - }); - - // HELPERS - - // LOCALES - - function localeWeek (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - } - - var defaultLocaleWeek = { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }; - - function localeFirstDayOfWeek () { - return this._week.dow; - } - - function localeFirstDayOfYear () { - return this._week.doy; - } - - // MOMENTS - - function getSetWeek (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - function getSetISOWeek (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - } - - // FORMATTING - - addFormatToken('d', 0, 'do', 'day'); - - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); - }); - - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); - }); - - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); - }); - - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); - - // PARSING - - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); - }); - - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; - } - }); - - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); - }); - - // HELPERS - - function parseWeekday(input, locale) { - if (typeof input !== 'string') { - return input; - } - - if (!isNaN(input)) { - return parseInt(input, 10); - } - - input = locale.weekdaysParse(input); - if (typeof input === 'number') { - return input; - } - - return null; - } - - function parseIsoWeekday(input, locale) { - if (typeof input === 'string') { - return locale.weekdaysParse(input) % 7 || 7; - } - return isNaN(input) ? null : input; - } - - // LOCALES - - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m, format) { - if (!m) { - return isArray(this._weekdays) ? this._weekdays : - this._weekdays['standalone']; - } - return isArray(this._weekdays) ? this._weekdays[m.day()] : - this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; - } - - function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._shortWeekdaysParse = []; - this._minWeekdaysParse = []; - - for (i = 0; i < 7; ++i) { - mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); - this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); - } - } - - if (strict) { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } else { - if (format === 'dddd') { - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else if (format === 'ddd') { - ii = indexOf.call(this._shortWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._minWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } else { - ii = indexOf.call(this._minWeekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._weekdaysParse, llc); - if (ii !== -1) { - return ii; - } - ii = indexOf.call(this._shortWeekdaysParse, llc); - return ii !== -1 ? ii : null; - } - } - } - - function localeWeekdaysParse (weekdayName, format, strict) { - var i, mom, regex; - - if (this._weekdaysParseExact) { - return handleStrictParse$1.call(this, weekdayName, format, strict); - } - - if (!this._weekdaysParse) { - this._weekdaysParse = []; - this._minWeekdaysParse = []; - this._shortWeekdaysParse = []; - this._fullWeekdaysParse = []; - } - - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - - mom = createUTC([2000, 1]).day(i); - if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); - } - if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { - return i; - } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { - return i; - } - } - } - - // MOMENTS - - function getSetDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - } - - function getSetLocaleDayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - } - - function getSetISODayOfWeek (input) { - if (!this.isValid()) { - return input != null ? this : NaN; - } - - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - - if (input != null) { - var weekday = parseIsoWeekday(input, this.localeData()); - return this.day(this.day() % 7 ? weekday : weekday - 7); - } else { - return this.day() || 7; - } - } - - var defaultWeekdaysRegex = matchWord; - function weekdaysRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysStrictRegex; - } else { - return this._weekdaysRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysRegex')) { - this._weekdaysRegex = defaultWeekdaysRegex; - } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; - } - } - - var defaultWeekdaysShortRegex = matchWord; - function weekdaysShortRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysShortStrictRegex; - } else { - return this._weekdaysShortRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysShortRegex')) { - this._weekdaysShortRegex = defaultWeekdaysShortRegex; - } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; - } - } - - var defaultWeekdaysMinRegex = matchWord; - function weekdaysMinRegex (isStrict) { - if (this._weekdaysParseExact) { - if (!hasOwnProp(this, '_weekdaysRegex')) { - computeWeekdaysParse.call(this); - } - if (isStrict) { - return this._weekdaysMinStrictRegex; - } else { - return this._weekdaysMinRegex; - } - } else { - if (!hasOwnProp(this, '_weekdaysMinRegex')) { - this._weekdaysMinRegex = defaultWeekdaysMinRegex; - } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; - } - } - - - function computeWeekdaysParse () { - function cmpLenRev(a, b) { - return b.length - a.length; - } - - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); - minPieces.push(minp); - shortPieces.push(shortp); - longPieces.push(longp); - mixedPieces.push(minp); - mixedPieces.push(shortp); - mixedPieces.push(longp); - } - // Sorting makes sure if one weekday (or abbr) is a prefix of another it - // will match the longer piece. - minPieces.sort(cmpLenRev); - shortPieces.sort(cmpLenRev); - longPieces.sort(cmpLenRev); - mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } - - this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); - this._weekdaysShortRegex = this._weekdaysRegex; - this._weekdaysMinRegex = this._weekdaysRegex; - - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); - } - - // FORMATTING - - function hFormat() { - return this.hours() % 12 || 12; - } - - function kFormat() { - return this.hours() || 24; - } - - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, hFormat); - addFormatToken('k', ['kk', 2], 0, kFormat); - - addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); - - addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); - }); - - addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PRIORITY - addUnitPriority('hour', 13); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - addRegexToken('kk', match1to2, match2); - - addRegexToken('hmm', match3to4); - addRegexToken('hmmss', match5to6); - addRegexToken('Hmm', match3to4); - addRegexToken('Hmmss', match5to6); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); - - // LOCALES - - function localeIsPM (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - } - - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - } - - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - - var baseConfig = { - calendar: defaultCalendar, - longDateFormat: defaultLongDateFormat, - invalidDate: defaultInvalidDate, - ordinal: defaultOrdinal, - dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, - relativeTime: defaultRelativeTime, - - months: defaultLocaleMonths, - monthsShort: defaultLocaleMonthsShort, - - week: defaultLocaleWeek, - - weekdays: defaultLocaleWeekdays, - weekdaysMin: defaultLocaleWeekdaysMin, - weekdaysShort: defaultLocaleWeekdaysShort, - - meridiemParse: defaultLocaleMeridiemParse - }; - - // internal storage for locale config files - var locales = {}; - var localeFamilies = {}; - var globalLocale; - - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } - - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; - - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return globalLocale; - } - - function loadLocale(name) { - var oldLocale = null; - // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { - try { - oldLocale = globalLocale._abbr; - var aliasedRequire = require; - aliasedRequire('./locale/' + name); - getSetGlobalLocale(oldLocale); - } catch (e) {} - } - return locales[name]; - } - - // This function will load locale and then set the global locale. If - // no arguments are passed in, it will simply return the current global - // locale key. - function getSetGlobalLocale (key, values) { - var data; - if (key) { - if (isUndefined(values)) { - data = getLocale(key); - } - else { - data = defineLocale(key, values); - } - - if (data) { - // moment.duration._locale = moment._locale = data; - globalLocale = data; - } - else { - if ((typeof console !== 'undefined') && console.warn) { - //warn user if arguments are passed but the locale could not be set - console.warn('Locale ' + key + ' not found. Did you forget to load it?'); - } - } - } - - return globalLocale._abbr; - } - - function defineLocale (name, config) { - if (config !== null) { - var locale, parentConfig = baseConfig; - config.abbr = name; - if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + - 'an existing locale. moment.defineLocale(localeName, ' + - 'config) should only be used for creating a new locale ' + - 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); - parentConfig = locales[name]._config; - } else if (config.parentLocale != null) { - if (locales[config.parentLocale] != null) { - parentConfig = locales[config.parentLocale]._config; - } else { - locale = loadLocale(config.parentLocale); - if (locale != null) { - parentConfig = locale._config; - } else { - if (!localeFamilies[config.parentLocale]) { - localeFamilies[config.parentLocale] = []; - } - localeFamilies[config.parentLocale].push({ - name: name, - config: config - }); - return null; - } - } - } - locales[name] = new Locale(mergeConfigs(parentConfig, config)); - - if (localeFamilies[name]) { - localeFamilies[name].forEach(function (x) { - defineLocale(x.name, x.config); - }); - } - - // backwards compat for now: also set the locale - // make sure we set the locale AFTER all child locales have been - // created, so we won't end up with the child locale set. - getSetGlobalLocale(name); - - - return locales[name]; - } else { - // useful for testing - delete locales[name]; - return null; - } - } - - function updateLocale(name, config) { - if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; - } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; - - // backwards compat for now: also set the locale - getSetGlobalLocale(name); - } else { - // pass null for config to unupdate, useful for tests - if (locales[name] != null) { - if (locales[name].parentLocale != null) { - locales[name] = locales[name].parentLocale; - } else if (locales[name] != null) { - delete locales[name]; - } - } - } - return locales[name]; - } - - // returns locale data - function getLocale (key) { - var locale; - - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } - - if (!key) { - return globalLocale; - } - - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } - - return chooseLocale(key); - } - - function listLocales() { - return keys(locales); - } - - function checkOverflow (m) { - var overflow; - var a = m._a; - - if (a && getParsingFlags(m).overflow === -2) { - overflow = - a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : - a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : - a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : - a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : - a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : - a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } - if (getParsingFlags(m)._overflowWeeks && overflow === -1) { - overflow = WEEK; - } - if (getParsingFlags(m)._overflowWeekday && overflow === -1) { - overflow = WEEKDAY; - } - - getParsingFlags(m).overflow = overflow; - } - - return m; - } - - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); - - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - - // check for mismatching day of week - if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to begining of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } - } - if (dateFormat == null) { - config._isValid = false; - return; - } - if (match[3]) { - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(match[3])) { - // match[2] should be 'T' or space - timeFormat = (match[2] || ' ') + isoTimes[i][0]; - break; - } - } - if (timeFormat == null) { - config._isValid = false; - return; - } - } - if (!allowTime && timeFormat != null) { - config._isValid = false; - return; - } - if (match[4]) { - if (tzRegex.exec(match[4])) { - tzFormat = 'Z'; - } else { - config._isValid = false; - return; - } - } - config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); - configFromStringAndFormat(config); - } else { - config._isValid = false; - } - } - - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; - - function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { - var result = [ - untruncateYear(yearStr), - defaultLocaleMonthsShort.indexOf(monthStr), - parseInt(dayStr, 10), - parseInt(hourStr, 10), - parseInt(minuteStr, 10) - ]; - - if (secondStr) { - result.push(parseInt(secondStr, 10)); - } - - return result; - } - - function untruncateYear(yearStr) { - var year = parseInt(yearStr, 10); - if (year <= 49) { - return 2000 + year; - } else if (year <= 999) { - return 1900 + year; - } - return year; - } - - function preprocessRFC2822(s) { - // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim(); - } - - function checkWeekday(weekdayStr, parsedInput, config) { - if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. - var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); - if (weekdayProvided !== weekdayActual) { - getParsingFlags(config).weekdayMismatch = true; - config._isValid = false; - return false; - } - } - return true; - } - - var obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 - }; - - function calculateOffset(obsOffset, militaryOffset, numOffset) { - if (obsOffset) { - return obsOffsets[obsOffset]; - } else if (militaryOffset) { - // the only allowed military tz is Z - return 0; - } else { - var hm = parseInt(numOffset, 10); - var m = hm % 100, h = (hm - m) / 100; - return h * 60 + m; - } - } - - // date and time from ref 2822 format - function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)); - if (match) { - var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); - if (!checkWeekday(match[1], parsedArray, config)) { - return; - } - - config._a = parsedArray; - config._tzm = calculateOffset(match[8], match[9], match[10]); - - config._d = createUTCDate.apply(null, config._a); - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - - getParsingFlags(config).rfc2822 = true; - } else { - config._isValid = false; - } - } - - // date from iso format or fallback - function configFromString(config) { - var matched = aspNetJsonRegex.exec(config._i); - - if (matched !== null) { - config._d = new Date(+matched[1]); - return; - } - - configFromISO(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - configFromRFC2822(config); - if (config._isValid === false) { - delete config._isValid; - } else { - return; - } - - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); - } - - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // constant that refers to the ISO standard - hooks.ISO_8601 = function () {}; - - // constant that refers to the RFC 2822 form - hooks.RFC_2822 = function () {}; - - // date from string and format string - function configFromStringAndFormat(config) { - // TODO: Move this to another part of the creation flow to prevent circular deps - if (config._f === hooks.ISO_8601) { - configFromISO(config); - return; - } - if (config._f === hooks.RFC_2822) { - configFromRFC2822(config); - return; - } - config._a = []; - getParsingFlags(config).empty = true; - - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; - - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - // console.log('token', token, 'parsedInput', parsedInput, - // 'regex', getParseRegexForToken(token, config)); - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - getParsingFlags(config).unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - getParsingFlags(config).empty = false; - } - else { - getParsingFlags(config).unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - getParsingFlags(config).unusedTokens.push(token); - } - } - - // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - getParsingFlags(config).unusedInput.push(string); - } - - // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && - getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { - getParsingFlags(config).bigHour = undefined; - } - - getParsingFlags(config).parsedDateParts = config._a.slice(0); - getParsingFlags(config).meridiem = config._meridiem; - // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); - - configFromArray(config); - checkOverflow(config); - } - - - function meridiemFixWrap (locale, hour, meridiem) { - var isPm; - - if (meridiem == null) { - // nothing to do - return hour; - } - if (locale.meridiemHour != null) { - return locale.meridiemHour(hour, meridiem); - } else if (locale.isPM != null) { - // Fallback - isPm = locale.isPM(meridiem); - if (isPm && hour < 12) { - hour += 12; - } - if (!isPm && hour === 12) { - hour = 0; - } - return hour; - } else { - // this is not supposed to happen - return hour; - } - } - - // date from string and array of format strings - function configFromStringAndArray(config) { - var tempConfig, - bestMoment, - - scoreToBeat, - i, - currentScore; - - if (config._f.length === 0) { - getParsingFlags(config).invalidFormat = true; - config._d = new Date(NaN); - return; - } - - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._f = config._f[i]; - configFromStringAndFormat(tempConfig); - - if (!isValid(tempConfig)) { - continue; - } - - // if there is any input that was not parsed add a penalty for that format - currentScore += getParsingFlags(tempConfig).charsLeftOver; - - //or tokens - currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - - getParsingFlags(tempConfig).score = currentScore; - - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } - - extend(config, bestMoment || tempConfig); - } - - function configFromObject(config) { - if (config._d) { - return; - } - - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); - - configFromArray(config); - } - - function createFromConfig (config) { - var res = new Moment(checkOverflow(prepareConfig(config))); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } - - return res; - } - - function prepareConfig (config) { - var input = config._i, - format = config._f; - - config._locale = config._locale || getLocale(config._l); - - if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); - } - - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } - - if (isMoment(input)) { - return new Moment(checkOverflow(input)); - } else if (isDate(input)) { - config._d = input; - } else if (isArray(format)) { - configFromStringAndArray(config); - } else if (format) { - configFromStringAndFormat(config); - } else { - configFromInput(config); - } - - if (!isValid(config)) { - config._d = null; - } - - return config; - } - - function configFromInput(config) { - var input = config._i; - if (isUndefined(input)) { - config._d = new Date(hooks.now()); - } else if (isDate(input)) { - config._d = new Date(input.valueOf()); - } else if (typeof input === 'string') { - configFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - configFromArray(config); - } else if (isObject(input)) { - configFromObject(config); - } else if (isNumber(input)) { - // from milliseconds - config._d = new Date(input); - } else { - hooks.createFromInputFallback(config); - } - } - - function createLocalOrUTC (input, format, locale, strict, isUTC) { - var c = {}; - - if (locale === true || locale === false) { - strict = locale; - locale = undefined; - } - - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { - input = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c._isAMomentObject = true; - c._useUTC = c._isUTC = isUTC; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - - return createFromConfig(c); - } - - function createLocal (input, format, locale, strict) { - return createLocalOrUTC(input, format, locale, strict, false); - } - - var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); - } - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); - } - } - ); - - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return createLocal(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (!moments[i].isValid() || moments[i][fn](res)) { - res = moments[i]; - } - } - return res; - } - - // TODO: Use [].sort instead? - function min () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - } - - function max () { - var args = [].slice.call(arguments, 0); - - return pickBy('isAfter', args); - } - - var now = function () { - return Date.now ? Date.now() : +(new Date()); - }; - - var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; - - function isDurationValid(m) { - for (var key in m) { - if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { - return false; - } - } - - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { - if (m[ordering[i]]) { - if (unitHasDecimal) { - return false; // only allow non-integers for smallest unit - } - if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { - unitHasDecimal = true; - } - } - } - - return true; - } - - function isValid$1() { - return this._isValid; - } - - function createInvalid$1() { - return createDuration(NaN); - } - - function Duration (duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; - - this._isValid = isDurationValid(normalizedInput); - - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible to translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; - - this._data = {}; - - this._locale = getLocale(); - - this._bubble(); - } - - function isDuration (obj) { - return obj instanceof Duration; - } - - function absRound (number) { - if (number < 0) { - return Math.round(-1 * number) * -1; - } else { - return Math.round(number); - } - } - - // FORMATTING - - function offset (token, separator) { - addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; - if (offset < 0) { - offset = -offset; - sign = '-'; - } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); - }); - } - - offset('Z', ':'); - offset('ZZ', ''); - - // PARSING - - addRegexToken('Z', matchShortOffset); - addRegexToken('ZZ', matchShortOffset); - addParseToken(['Z', 'ZZ'], function (input, array, config) { - config._useUTC = true; - config._tzm = offsetFromString(matchShortOffset, input); - }); - - // HELPERS - - // timezone chunker - // '+10:00' > ['10', '00'] - // '-1530' > ['-15', '30'] - var chunkOffset = /([\+\-]|\d\d)/gi; - - function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); - - if (matches === null) { - return null; - } - - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); - - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; - } - - // Return a moment from input, that is local/utc/zone equivalent to model. - function cloneWithOffset(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); - // Use low-level api, because this fn is low-level api. - res._d.setTime(res._d.valueOf() + diff); - hooks.updateOffset(res, false); - return res; - } else { - return createLocal(input).local(); - } - } - - function getDateOffset (m) { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; - } - - // HOOKS - - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - hooks.updateOffset = function () {}; - - // MOMENTS - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime, keepMinutes) { - var offset = this._offset || 0, - localAdjust; - if (!this.isValid()) { - return input != null ? this : NaN; - } - if (input != null) { - if (typeof input === 'string') { - input = offsetFromString(matchShortOffset, input); - if (input === null) { - return this; - } - } else if (Math.abs(input) < 16 && !keepMinutes) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = getDateOffset(this); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.add(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - hooks.updateOffset(this, true); - this._changeInProgress = null; - } - } - return this; - } else { - return this._isUTC ? offset : getDateOffset(this); - } - } - - function getSetZone (input, keepLocalTime) { - if (input != null) { - if (typeof input !== 'string') { - input = -input; - } - - this.utcOffset(input, keepLocalTime); - - return this; - } else { - return -this.utcOffset(); - } - } - - function setOffsetToUTC (keepLocalTime) { - return this.utcOffset(0, keepLocalTime); - } - - function setOffsetToLocal (keepLocalTime) { - if (this._isUTC) { - this.utcOffset(0, keepLocalTime); - this._isUTC = false; - - if (keepLocalTime) { - this.subtract(getDateOffset(this), 'm'); - } - } - return this; - } - - function setOffsetToParsedOffset () { - if (this._tzm != null) { - this.utcOffset(this._tzm, false, true); - } else if (typeof this._i === 'string') { - var tZone = offsetFromString(matchOffset, this._i); - if (tZone != null) { - this.utcOffset(tZone); - } - else { - this.utcOffset(0, true); - } - } - return this; - } - - function hasAlignedHourOffset (input) { - if (!this.isValid()) { - return false; - } - input = input ? createLocal(input).utcOffset() : 0; - - return (this.utcOffset() - input) % 60 === 0; - } - - function isDaylightSavingTime () { - return ( - this.utcOffset() > this.clone().month(0).utcOffset() || - this.utcOffset() > this.clone().month(5).utcOffset() - ); - } - - function isDaylightSavingTimeShifted () { - if (!isUndefined(this._isDSTShifted)) { - return this._isDSTShifted; - } - - var c = {}; - - copyConfig(c, this); - c = prepareConfig(c); - - if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; - } else { - this._isDSTShifted = false; - } - - return this._isDSTShifted; - } - - function isLocal () { - return this.isValid() ? !this._isUTC : false; - } - - function isUtcOffset () { - return this.isValid() ? this._isUTC : false; - } - - function isUtc () { - return this.isValid() ? this._isUTC && this._offset === 0 : false; - } - - // ASP.NET json date format regex - var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - - function createDuration (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - diffRes; - - if (isDuration(input)) { - duration = { - ms : input._milliseconds, - d : input._days, - M : input._months - }; - } else if (isNumber(input)) { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match - }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1; - duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) - }; - } else if (duration == null) {// checks for null or undefined - duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); - - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; - } - - ret = new Duration(duration); - - if (isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; - } - - return ret; - } - - createDuration.fn = Duration.prototype; - createDuration.invalid = createInvalid$1; - - function parseIso (inp, sign) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - } - - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; - } - - function momentsDifference(base, other) { - var res; - if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; - } - - other = cloneWithOffset(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); - } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; - } - - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = createDuration(val, period); - addSubtract(this, dur, direction); - return this; - }; - } - - function addSubtract (mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = absRound(duration._days), - months = absRound(duration._months); - - if (!mom.isValid()) { - // No op - return; - } - - updateOffset = updateOffset == null ? true : updateOffset; - - if (months) { - setMonth(mom, get(mom, 'Month') + months * isAdding); - } - if (days) { - set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); - } - if (milliseconds) { - mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); - } - if (updateOffset) { - hooks.updateOffset(mom, days || months); - } - } - - var add = createAdder(1, 'add'); - var subtract = createAdder(-1, 'subtract'); - - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - } - - function calendar$1 (time, formats) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're local/utc/offset or not. - var now = time || createLocal(), - sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); - } - - function clone () { - return new Moment(this); - } - - function isAfter (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() > localInput.valueOf(); - } else { - return localInput.valueOf() < this.clone().startOf(units).valueOf(); - } - } - - function isBefore (input, units) { - var localInput = isMoment(input) ? input : createLocal(input); - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() < localInput.valueOf(); - } else { - return this.clone().endOf(units).valueOf() < localInput.valueOf(); - } - } - - function isBetween (from, to, units, inclusivity) { - inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && - (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); - } - - function isSame (input, units) { - var localInput = isMoment(input) ? input : createLocal(input), - inputMs; - if (!(this.isValid() && localInput.isValid())) { - return false; - } - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - return this.valueOf() === localInput.valueOf(); - } else { - inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); - } - } - - function isSameOrAfter (input, units) { - return this.isSame(input, units) || this.isAfter(input,units); - } - - function isSameOrBefore (input, units) { - return this.isSame(input, units) || this.isBefore(input,units); - } - - function diff (input, units, asFloat) { - var that, - zoneDelta, - output; - - if (!this.isValid()) { - return NaN; - } - - that = cloneWithOffset(input, this); - - if (!that.isValid()) { - return NaN; - } - - zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; - - units = normalizeUnits(units); - - switch (units) { - case 'year': output = monthDiff(this, that) / 12; break; - case 'month': output = monthDiff(this, that); break; - case 'quarter': output = monthDiff(this, that) / 3; break; - case 'second': output = (this - that) / 1e3; break; // 1000 - case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 - case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 - case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst - case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: output = this - that; - } - - return asFloat ? output : absFloor(output); - } - - function monthDiff (a, b) { - // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), - // b is in (anchor - 1 month, anchor + 1 month) - anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; - - if (b - anchor < 0) { - anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor - anchor2); - } else { - anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); - // linear across the month - adjust = (b - anchor) / (anchor2 - anchor); - } - - //check for negative zero, return zero if negative zero - return -(wholeMonthDiff + adjust) || 0; - } - - hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; - hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - - function toString () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - function toISOString(keepOffset) { - if (!this.isValid()) { - return null; - } - var utc = keepOffset !== true; - var m = utc ? this.clone().utc() : this; - if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); - } - if (isFunction(Date.prototype.toISOString)) { - // native implementation is ~50x faster, use it when we can - if (utc) { - return this.toDate().toISOString(); - } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); - } - } - return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); - } - - /** - * Return a human readable representation of a moment that can - * also be evaluated to get a new moment which is the same - * - * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - */ - function inspect () { - if (!this.isValid()) { - return 'moment.invalid(/* ' + this._i + ' */)'; - } - var func = 'moment'; - var zone = ''; - if (!this.isLocal()) { - func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; - zone = 'Z'; - } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; - - return this.format(prefix + year + datetime + suffix); - } - - function format (inputString) { - if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; - } - var output = formatMoment(this, inputString); - return this.localeData().postformat(output); - } - - function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - - function fromNow (withoutSuffix) { - return this.from(createLocal(), withoutSuffix); - } - - function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); - } else { - return this.localeData().invalidDate(); - } - } - - function toNow (withoutSuffix) { - return this.to(createLocal(), withoutSuffix); - } - - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - function locale (key) { - var newLocaleData; - - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = getLocale(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - } - - var lang = deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ); - - function localeData () { - return this._locale; - } - - function startOf (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - case 'date': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - } - - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } - if (units === 'isoWeek') { - this.isoWeekday(1); - } - - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - - return this; - } - - function endOf (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - - // 'date' is an alias for 'day', so it should be considered as such. - if (units === 'date') { - units = 'day'; - } - - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - } - - function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); - } - - function unix () { - return Math.floor(this.valueOf() / 1000); - } - - function toDate () { - return new Date(this.valueOf()); - } - - function toArray () { - var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; - } - - function toObject () { - var m = this; - return { - years: m.year(), - months: m.month(), - date: m.date(), - hours: m.hours(), - minutes: m.minutes(), - seconds: m.seconds(), - milliseconds: m.milliseconds() - }; - } - - function toJSON () { - // new Date(NaN).toJSON() === null - return this.isValid() ? this.toISOString() : null; - } - - function isValid$2 () { - return isValid(this); - } - - function parsingFlags () { - return extend({}, getParsingFlags(this)); - } - - function invalidAt () { - return getParsingFlags(this).overflow; - } - - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; - } - - // FORMATTING - - addFormatToken(0, ['gg', 2], 0, function () { - return this.weekYear() % 100; - }); - - addFormatToken(0, ['GG', 2], 0, function () { - return this.isoWeekYear() % 100; - }); - - function addWeekYearFormatToken (token, getter) { - addFormatToken(0, [token, token.length], 0, getter); - } - - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); - addWeekYearFormatToken('GGGGG', 'isoWeekYear'); - - // ALIASES - - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PRIORITY - - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); - - - // PARSING - - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { - week[token.substr(0, 2)] = toInt(input); - }); - - addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { - week[token] = hooks.parseTwoDigitYear(input); - }); - - // MOMENTS - - function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); - } - - function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); - } - - function getISOWeeksInYear () { - return weeksInYear(this.year(), 1, 4); - } - - function getWeeksInYear () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - } - - function getSetWeekYearHelper(input, week, weekday, dow, doy) { - var weeksTarget; - if (input == null) { - return weekOfYear(this, dow, doy).year; - } else { - weeksTarget = weeksInYear(input, dow, doy); - if (week > weeksTarget) { - week = weeksTarget; - } - return setWeekAll.call(this, input, week, weekday, dow, doy); - } - } - - function setWeekAll(weekYear, week, weekday, dow, doy) { - var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), - date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); - - this.year(date.getUTCFullYear()); - this.month(date.getUTCMonth()); - this.date(date.getUTCDate()); - return this; - } - - // FORMATTING - - addFormatToken('Q', 0, 'Qo', 'quarter'); - - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PRIORITY - - addUnitPriority('quarter', 7); - - // PARSING - - addRegexToken('Q', match1); - addParseToken('Q', function (input, array) { - array[MONTH] = (toInt(input) - 1) * 3; - }); - - // MOMENTS - - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - } - - // FORMATTING - - addFormatToken('D', ['DD', 2], 'Do', 'date'); - - // ALIASES - - addUnitAlias('date', 'D'); - - // PRIORITY - addUnitPriority('date', 9); - - // PARSING - - addRegexToken('D', match1to2); - addRegexToken('DD', match1to2, match2); - addRegexToken('Do', function (isStrict, locale) { - // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; - }); - - addParseToken(['D', 'DD'], DATE); - addParseToken('Do', function (input, array) { - array[DATE] = toInt(input.match(match1to2)[0]); - }); - - // MOMENTS - - var getSetDayOfMonth = makeGetSet('Date', true); - - // FORMATTING - - addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PRIORITY - addUnitPriority('dayOfYear', 4); - - // PARSING - - addRegexToken('DDD', match1to3); - addRegexToken('DDDD', match3); - addParseToken(['DDD', 'DDDD'], function (input, array, config) { - config._dayOfYear = toInt(input); - }); - - // HELPERS - - // MOMENTS - - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - } - - // FORMATTING - - addFormatToken('m', ['mm', 2], 0, 'minute'); - - // ALIASES - - addUnitAlias('minute', 'm'); - - // PRIORITY - - addUnitPriority('minute', 14); - - // PARSING - - addRegexToken('m', match1to2); - addRegexToken('mm', match1to2, match2); - addParseToken(['m', 'mm'], MINUTE); - - // MOMENTS - - var getSetMinute = makeGetSet('Minutes', false); - - // FORMATTING - - addFormatToken('s', ['ss', 2], 0, 'second'); - - // ALIASES - - addUnitAlias('second', 's'); - - // PRIORITY - - addUnitPriority('second', 15); - - // PARSING - - addRegexToken('s', match1to2); - addRegexToken('ss', match1to2, match2); - addParseToken(['s', 'ss'], SECOND); - - // MOMENTS - - var getSetSecond = makeGetSet('Seconds', false); - - // FORMATTING - - addFormatToken('S', 0, 0, function () { - return ~~(this.millisecond() / 100); - }); - - addFormatToken(0, ['SS', 2], 0, function () { - return ~~(this.millisecond() / 10); - }); - - addFormatToken(0, ['SSS', 3], 0, 'millisecond'); - addFormatToken(0, ['SSSS', 4], 0, function () { - return this.millisecond() * 10; - }); - addFormatToken(0, ['SSSSS', 5], 0, function () { - return this.millisecond() * 100; - }); - addFormatToken(0, ['SSSSSS', 6], 0, function () { - return this.millisecond() * 1000; - }); - addFormatToken(0, ['SSSSSSS', 7], 0, function () { - return this.millisecond() * 10000; - }); - addFormatToken(0, ['SSSSSSSS', 8], 0, function () { - return this.millisecond() * 100000; - }); - addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { - return this.millisecond() * 1000000; - }); - - - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PRIORITY - - addUnitPriority('millisecond', 16); - - // PARSING - - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); - - var token; - for (token = 'SSSS'; token.length <= 9; token += 'S') { - addRegexToken(token, matchUnsigned); - } - - function parseMs(input, array) { - array[MILLISECOND] = toInt(('0.' + input) * 1000); - } - - for (token = 'S'; token.length <= 9; token += 'S') { - addParseToken(token, parseMs); - } - // MOMENTS - - var getSetMillisecond = makeGetSet('Milliseconds', false); - - // FORMATTING - - addFormatToken('z', 0, 0, 'zoneAbbr'); - addFormatToken('zz', 0, 0, 'zoneName'); - - // MOMENTS - - function getZoneAbbr () { - return this._isUTC ? 'UTC' : ''; - } - - function getZoneName () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - } - - var proto = Moment.prototype; - - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.year = getSetYear; - proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; - proto.isoWeekYear = getSetISOWeekYear; - proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; - proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; - proto.isoWeeksInYear = getISOWeeksInYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; - proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; - proto.hour = proto.hours = getSetHour; - proto.minute = proto.minutes = getSetMinute; - proto.second = proto.seconds = getSetSecond; - proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; - proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; - proto.zoneAbbr = getZoneAbbr; - proto.zoneName = getZoneName; - proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); - proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); - - function createUnix (input) { - return createLocal(input * 1000); - } - - function createInZone () { - return createLocal.apply(null, arguments).parseZone(); - } - - function preParsePostFormat (string) { - return string; - } - - var proto$1 = Locale.prototype; - - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; - proto$1.week = localeWeek; - proto$1.firstDayOfYear = localeFirstDayOfYear; - proto$1.firstDayOfWeek = localeFirstDayOfWeek; - - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; - - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; - - proto$1.isPM = localeIsPM; - proto$1.meridiem = localeMeridiem; - - function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); - return locale[field](utc, format); - } - - function listMonthsImpl (format, index, field) { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - - if (index != null) { - return get$1(format, index, field, 'month'); - } - - var i; - var out = []; - for (i = 0; i < 12; i++) { - out[i] = get$1(format, i, field, 'month'); - } - return out; - } - - // () - // (5) - // (fmt, 5) - // (fmt) - // (true) - // (true, 5) - // (true, fmt, 5) - // (true, fmt) - function listWeekdaysImpl (localeSorted, format, index, field) { - if (typeof localeSorted === 'boolean') { - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } else { - format = localeSorted; - index = format; - localeSorted = false; - - if (isNumber(format)) { - index = format; - format = undefined; - } - - format = format || ''; - } - - var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; - - if (index != null) { - return get$1(format, (index + shift) % 7, field, 'day'); - } - - var i; - var out = []; - for (i = 0; i < 7; i++) { - out[i] = get$1(format, (i + shift) % 7, field, 'day'); - } - return out; - } - - function listMonths (format, index) { - return listMonthsImpl(format, index, 'months'); - } - - function listMonthsShort (format, index) { - return listMonthsImpl(format, index, 'monthsShort'); - } - - function listWeekdays (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); - } - - function listWeekdaysShort (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); - } - - function listWeekdaysMin (localeSorted, format, index) { - return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); - } - - getSetGlobalLocale('en', { - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - // Side effect imports - - hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); - hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); - - var mathAbs = Math.abs; - - function abs () { - var data = this._data; - - this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); - - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); - - return this; - } - - function addSubtract$1 (duration, input, value, direction) { - var other = createDuration(input, value); - - duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; - - return duration._bubble(); - } - - // supports only 2.0-style add(1, 's') or add(duration) - function add$1 (input, value) { - return addSubtract$1(this, input, value, 1); - } - - // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1 (input, value) { - return addSubtract$1(this, input, value, -1); - } - - function absCeil (number) { - if (number < 0) { - return Math.floor(number); - } else { - return Math.ceil(number); - } - } - - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; - - // if we have a mix of positive and negative values, bubble down first - // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { - milliseconds += absCeil(monthsToDays(months) + days) * 864e5; - days = 0; - months = 0; - } - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; - - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; - - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; - - hours = absFloor(minutes / 60); - data.hours = hours % 24; - - days += absFloor(hours / 24); - - // convert days to months - monthsFromDays = absFloor(daysToMonths(days)); - months += monthsFromDays; - days -= absCeil(monthsToDays(monthsFromDays)); - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - data.days = days; - data.months = months; - data.years = years; - - return this; - } - - function daysToMonths (days) { - // 400 years have 146097 days (taking into account leap year rules) - // 400 years have 12 months === 4800 - return days * 4800 / 146097; - } - - function monthsToDays (months) { - // the reverse of daysToMonths - return months * 146097 / 4800; - } - - function as (units) { - if (!this.isValid()) { - return NaN; - } - var days; - var months; - var milliseconds = this._milliseconds; - - units = normalizeUnits(units); - - if (units === 'month' || units === 'year') { - days = this._days + milliseconds / 864e5; - months = this._months + daysToMonths(days); - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(monthsToDays(this._months)); - switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - } - - // TODO: Use this.as('ms')? - function valueOf$1 () { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - - function makeAs (alias) { - return function () { - return this.as(alias); - }; - } - - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asYears = makeAs('y'); - - function clone$1 () { - return createDuration(this); - } - - function get$2 (units) { - units = normalizeUnits(units); - return this.isValid() ? this[units + 's']() : NaN; - } - - function makeGetter(name) { - return function () { - return this.isValid() ? this._data[name] : NaN; - }; - } - - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); - - function weeks () { - return absFloor(this.days() / 7); - } - - var round = Math.round; - var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year - }; - - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } - - function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; - - a[2] = withoutSuffix; - a[3] = +posNegDuration > 0; - a[4] = locale; - return substituteTimeAgo.apply(null, a); - } - - // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding (roundingFunction) { - if (roundingFunction === undefined) { - return round; - } - if (typeof(roundingFunction) === 'function') { - round = roundingFunction; - return true; - } - return false; - } - - // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold (threshold, limit) { - if (thresholds[threshold] === undefined) { - return false; - } - if (limit === undefined) { - return thresholds[threshold]; - } - thresholds[threshold] = limit; - if (threshold === 's') { - thresholds.ss = limit - 1; - } - return true; - } - - function humanize (withSuffix) { - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); - - if (withSuffix) { - output = locale.pastFuture(+this, output); - } - - return locale.postformat(output); - } - - var abs$1 = Math.abs; - - function sign(x) { - return ((x > 0) - (x < 0)) || +x; - } - - function toISOString$1() { - // for ISO strings we do not use the normal bubbling rules: - // * milliseconds bubble up until they become hours - // * days do not bubble at all - // * months bubble up until they become years - // This is because there is no context-free conversion between hours and days - // (think of clock changes) - // and also not between days and months (28-31 days per month) - if (!this.isValid()) { - return this.localeData().invalidDate(); - } - - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; - - // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); - seconds %= 60; - minutes %= 60; - - // 12 months -> 1 year - years = absFloor(months / 12); - months %= 12; - - - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } - - var totalSign = total < 0 ? '-' : ''; - var ymSign = sign(this._months) !== sign(total) ? '-' : ''; - var daysSign = sign(this._days) !== sign(total) ? '-' : ''; - var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - - return totalSign + 'P' + - (Y ? ymSign + Y + 'Y' : '') + - (M ? ymSign + M + 'M' : '') + - (D ? daysSign + D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? hmsSign + h + 'H' : '') + - (m ? hmsSign + m + 'M' : '') + - (s ? hmsSign + s + 'S' : ''); - } - - var proto$2 = Duration.prototype; - - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; - proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - - proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); - proto$2.lang = lang; - - // Side effect imports - - // FORMATTING - - addFormatToken('X', 0, 0, 'unix'); - addFormatToken('x', 0, 0, 'valueOf'); - - // PARSING - - addRegexToken('x', matchSigned); - addRegexToken('X', matchTimestamp); - addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); - }); - addParseToken('x', function (input, array, config) { - config._d = new Date(toInt(input)); - }); - - // Side effect imports - - //! moment.js - - hooks.version = '2.22.1'; - - setHookCallback(createLocal); - - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; - hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; - - // currently HTML5 input type only supports 24-hour formats - hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'YYYY-[W]WW', // - MONTH: 'YYYY-MM' // - }; - - //! moment.js locale configuration - - hooks.defineLocale('af', { - months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), - weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), - weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), - meridiemParse: /vm|nm/i, - isPM : function (input) { - return /^nm$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'vm' : 'VM'; - } else { - return isLower ? 'nm' : 'NM'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Vandag om] LT', - nextDay : '[Môre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'oor %s', - past : '%s gelede', - s : '\'n paar sekondes', - ss : '%d sekondes', - m : '\'n minuut', - mm : '%d minute', - h : '\'n uur', - hh : '%d ure', - d : '\'n dag', - dd : '%d dae', - M : '\'n maand', - MM : '%d maande', - y : '\'n jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter - }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ar-dz', { - months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 4 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ar-kw', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0' - }, pluralForm = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months$1 = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; - - hooks.defineLocale('ar-ly', { - months : months$1, - monthsShort : months$1, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - ss : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ar-ma', { - months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), - weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$1 = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - hooks.defineLocale('ar-sa', { - months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$1[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[اليوم على الساعة] LT', - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'في %s', - past: 'منذ %s', - s: 'ثوان', - ss : '%d ثانية', - m: 'دقيقة', - mm: '%d دقائق', - h: 'ساعة', - hh: '%d ساعات', - d: 'يوم', - dd: '%d أيام', - M: 'شهر', - MM: '%d أشهر', - y: 'سنة', - yy: '%d سنوات' - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$2 = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap$1 = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, pluralForm$1 = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals$1 = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize$1 = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm$1(number), - str = plurals$1[u][pluralForm$1(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months$2 = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; - - hooks.defineLocale('ar', { - months : months$2, - monthsShort : months$2, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/\u200FM/\u200FYYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ص|م/, - isPM : function (input) { - return 'م' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ص'; - } else { - return 'م'; - } - }, - calendar : { - sameDay: '[اليوم عند الساعة] LT', - nextDay: '[غدًا عند الساعة] LT', - nextWeek: 'dddd [عند الساعة] LT', - lastDay: '[أمس عند الساعة] LT', - lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize$1('s'), - ss : pluralize$1('s'), - m : pluralize$1('m'), - mm : pluralize$1('m'), - h : pluralize$1('h'), - hh : pluralize$1('h'), - d : pluralize$1('d'), - dd : pluralize$1('d'), - M : pluralize$1('M'), - MM : pluralize$1('M'), - y : pluralize$1('y'), - yy : pluralize$1('y') - }, - preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$1[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$2[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var suffixes = { - 1: '-inci', - 5: '-inci', - 8: '-inci', - 70: '-inci', - 80: '-inci', - 2: '-nci', - 7: '-nci', - 20: '-nci', - 50: '-nci', - 3: '-üncü', - 4: '-üncü', - 100: '-üncü', - 6: '-ncı', - 9: '-uncu', - 10: '-uncu', - 30: '-uncu', - 60: '-ıncı', - 90: '-ıncı' - }; - - hooks.defineLocale('az', { - months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), - monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), - weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyyə', - ss : '%d saniyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' - }, - meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { - return /^(gündüz|axşam)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'gecə'; - } else if (hour < 12) { - return 'səhər'; - } else if (hour < 17) { - return 'gündüz'; - } else { - return 'axşam'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + '-ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' - }; - if (key === 'm') { - return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { - return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { - return number + ' ' + plural(format[key], +number); - } - } - - hooks.defineLocale('be', { - months : { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') - }, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ - }, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., HH:mm', - LLLL : 'dddd, D MMMM YYYY г., HH:mm' - }, - calendar : { - sameDay: '[Сёння ў] LT', - nextDay: '[Заўтра ў] LT', - lastDay: '[Учора ў] LT', - nextWeek: function () { - return '[У] dddd [ў] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural - }, - meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { - return /^(дня|вечара)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночы'; - } else if (hour < 12) { - return 'раніцы'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечара'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'след %s', - past : 'преди %s', - s : 'няколко секунди', - ss : '%d секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дни', - M : 'месец', - MM : '%d месеца', - y : 'година', - yy : '%d години' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('bm', { - months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), - monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), - weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'MMMM [tile] D [san] YYYY', - LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' - }, - calendar : { - sameDay : '[Bi lɛrɛ] LT', - nextDay : '[Sini lɛrɛ] LT', - nextWeek : 'dddd [don lɛrɛ] LT', - lastDay : '[Kunu lɛrɛ] LT', - lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s kɔnɔ', - past : 'a bɛ %s bɔ', - s : 'sanga dama dama', - ss : 'sekondi %d', - m : 'miniti kelen', - mm : 'miniti %d', - h : 'lɛrɛ kelen', - hh : 'lɛrɛ %d', - d : 'tile kelen', - dd : 'tile %d', - M : 'kalo kelen', - MM : 'kalo %d', - y : 'san kelen', - yy : 'san %d' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$3 = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - numberMap$2 = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; - - hooks.defineLocale('bn', { - months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), - longDateFormat : { - LT : 'A h:mm সময়', - LTS : 'A h:mm:ss সময়', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm সময়', - LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s পরে', - past : '%s আগে', - s : 'কয়েক সেকেন্ড', - ss : '%d সেকেন্ড', - m : 'এক মিনিট', - mm : '%d মিনিট', - h : 'এক ঘন্টা', - hh : '%d ঘন্টা', - d : 'এক দিন', - dd : '%d দিন', - M : 'এক মাস', - MM : '%d মাস', - y : 'এক বছর', - yy : '%d বছর' - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap$2[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$3[match]; - }); - }, - meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'রাত'; - } else if (hour < 10) { - return 'সকাল'; - } else if (hour < 17) { - return 'দুপুর'; - } else if (hour < 20) { - return 'বিকাল'; - } else { - return 'রাত'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$4 = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - numberMap$3 = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; - - hooks.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ལ་', - past : '%s སྔན་ལ', - s : 'ལམ་སང', - ss : '%d སྐར་ཆ།', - m : 'སྐར་མ་གཅིག', - mm : '%d སྐར་མ', - h : 'ཆུ་ཚོད་གཅིག', - hh : '%d ཆུ་ཚོད', - d : 'ཉིན་གཅིག', - dd : '%d ཉིན་', - M : 'ཟླ་བ་གཅིག', - MM : '%d ཟླ་བ', - y : 'ལོ་གཅིག', - yy : '%d ལོ' - }, - preparse: function (string) { - return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap$3[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$4[match]; - }); - }, - meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'མཚན་མོ'; - } else if (hour < 10) { - return 'ཞོགས་ཀས'; - } else if (hour < 17) { - return 'ཉིན་གུང'; - } else if (hour < 20) { - return 'དགོང་དག'; - } else { - return 'མཚན་མོ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' - }; - return number + ' ' + mutation(format[key], number); - } - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; - } - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - - hooks.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - ss : '%d eilenn', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears - }, - dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function translate(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - hooks.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ca', { - months : { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), - isFormat: /D[oD]?(\s)+MMMM/ - }, - monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [de] YYYY', - ll : 'D MMM YYYY', - LLL : 'D MMMM [de] YYYY [a les] H:mm', - lll : 'D MMM YYYY, H:mm', - LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm', - llll : 'ddd D MMM YYYY, H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'd\'aquí %s', - past : 'fa %s', - s : 'uns segons', - ss : '%d segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' - }, - dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; - if (period === 'w' || period === 'W') { - output = 'a'; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - function plural$1(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); - } - function translate$1(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'sekundy' : 'sekund'); - } else { - return result + 'sekundami'; - } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural$1(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } - } - - hooks.defineLocale('cs', { - months : months$3, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months$3, monthsShort)), - shortMonthsParse : (function (monthsShort) { - var i, _shortMonthsParse = []; - for (i = 0; i < 12; i++) { - _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); - } - return _shortMonthsParse; - }(monthsShort)), - longMonthsParse : (function (months) { - var i, _longMonthsParse = []; - for (i = 0; i < 12; i++) { - _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); - } - return _longMonthsParse; - }(months$3)), - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm', - l : 'D. M. YYYY' - }, - calendar : { - sameDay: '[dnes v] LT', - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate$1, - ss : translate$1, - m : translate$1, - mm : translate$1, - h : translate$1, - hh : translate$1, - d : translate$1, - dd : translate$1, - M : translate$1, - MM : translate$1, - y : translate$1, - yy : translate$1 - }, - dayOfMonthOrdinalParse : /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ӗнер] LT [сехетре]', - nextWeek: '[Ҫитес] dddd LT [сехетре]', - lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; - return output + affix; - }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - ss : '%d ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' - }, - dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), - weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), - weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact : true, - // time formats are the same as en-gb - longDateFormat: { - LT: 'HH:mm', - LTS : 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'mewn %s', - past: '%s yn ôl', - s: 'ychydig eiliadau', - ss: '%d eiliad', - m: 'munud', - mm: '%d munud', - h: 'awr', - hh: '%d awr', - d: 'diwrnod', - dd: '%d diwrnod', - M: 'mis', - MM: '%d mis', - y: 'blwyddyn', - yy: '%d flynedd' - }, - dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay : '[i dag kl.] LT', - nextDay : '[i morgen kl.] LT', - nextWeek : 'på dddd [kl.] LT', - lastDay : '[i går kl.] LT', - lastWeek : '[i] dddd[s kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - ss : '%d sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - hooks.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$1(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - hooks.defineLocale('de-ch', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$1, - mm : '%d Minuten', - h : processRelativeTime$1, - hh : '%d Stunden', - d : processRelativeTime$1, - dd : processRelativeTime$1, - M : processRelativeTime$1, - MM : processRelativeTime$1, - y : processRelativeTime$1, - yy : processRelativeTime$1 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$2(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - hooks.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY HH:mm', - LLLL : 'dddd, D. MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', - sameElse: 'L', - nextDay: '[morgen um] LT [Uhr]', - nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$2, - mm : '%d Minuten', - h : processRelativeTime$2, - hh : '%d Stunden', - d : processRelativeTime$2, - dd : processRelativeTime$2, - M : processRelativeTime$2, - MM : processRelativeTime$2, - y : processRelativeTime$2, - yy : processRelativeTime$2 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var months$4 = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' - ], weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު' - ]; - - hooks.defineLocale('dv', { - months : months$4, - monthsShort : months$4, - weekdays : weekdays, - weekdaysShort : weekdays, - weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat : { - - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/M/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - meridiemParse: /މކ|މފ/, - isPM : function (input) { - return 'މފ' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'މކ'; - } else { - return 'މފ'; - } - }, - calendar : { - sameDay : '[މިއަދު] LT', - nextDay : '[މާދަމާ] LT', - nextWeek : 'dddd LT', - lastDay : '[އިއްޔެ] LT', - lastWeek : '[ފާއިތުވި] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ތެރޭގައި %s', - past : 'ކުރިން %s', - s : 'ސިކުންތުކޮޅެއް', - ss : 'd% ސިކުންތު', - m : 'މިނިޓެއް', - mm : 'މިނިޓު %d', - h : 'ގަޑިއިރެއް', - hh : 'ގަޑިއިރު %d', - d : 'ދުވަހެއް', - dd : 'ދުވަސް %d', - M : 'މަހެއް', - MM : 'މަސް %d', - y : 'އަހަރެއް', - yy : 'އަހަރު %d' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 7, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { - if (!momentToFormat) { - return this._monthsNominativeEl; - } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); - if (isFunction(output)) { - output = output.apply(mom); - } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - ss : '%d δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' - }, - dayOfMonthOrdinalParse: /\d{1,2}η/, - ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-ie', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-il', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-nz', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - ss : '%d seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-a de] MMMM, YYYY', - LLL : 'D[-a de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' - }, - meridiemParse: /[ap]\.t\.m/i, - isPM: function (input) { - return input.charAt(0).toLowerCase() === 'p'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'post %s', - past : 'antaŭ %s', - s : 'sekundoj', - ss : '%d sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' - }, - dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$1 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - - hooks.defineLocale('es-do', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortDot; - } else if (/-MMM-/.test(format)) { - return monthsShort$1[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - monthsRegex: monthsRegex$1, - monthsShortRegex: monthsRegex$1, - monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse: monthsParse, - longMonthsParse: monthsParse, - shortMonthsParse: monthsParse, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - hooks.defineLocale('es-us', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortDot$1; - } else if (/-MMM-/.test(format)) { - return monthsShort$2[m.month()]; - } else { - return monthsShortDot$1[m.month()]; - } - }, - monthsParseExact : true, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'MM/DD/YYYY', - LL : 'MMMM [de] D [de] YYYY', - LLL : 'MMMM [de] D [de] YYYY h:mm A', - LLLL : 'dddd, MMMM [de] D [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; - - hooks.defineLocale('es', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortDot$2; - } else if (/-MMM-/.test(format)) { - return monthsShort$3[m.month()]; - } else { - return monthsShortDot$2[m.month()]; - } - }, - monthsRegex : monthsRegex$2, - monthsShortRegex : monthsRegex$2, - monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse : monthsParse$1, - longMonthsParse : monthsParse$1, - shortMonthsParse : monthsParse$1, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$3(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'ss': [number + 'sekundi', number + 'sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } - - hooks.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : processRelativeTime$3, - ss : processRelativeTime$3, - m : processRelativeTime$3, - mm : processRelativeTime$3, - h : processRelativeTime$3, - hh : processRelativeTime$3, - d : processRelativeTime$3, - dd : '%d päeva', - M : processRelativeTime$3, - MM : processRelativeTime$3, - y : processRelativeTime$3, - yy : processRelativeTime$3 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - monthsParseExact : true, - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - ss : '%d segundo', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$5 = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, numberMap$4 = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; - - hooks.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /قبل از ظهر|بعد از ظهر/, - isPM: function (input) { - return /بعد از ظهر/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'قبل از ظهر'; - } else { - return 'بعد از ظهر'; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چند ثانیه', - ss : 'ثانیه d%', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap$4[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$5[match]; - }).replace(/,/g, '،'); - }, - dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] - ]; - function translate$2(number, withoutSuffix, key, isFuture) { - var result = ''; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'ss': - return isFuture ? 'sekunnin' : 'sekuntia'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + ' ' + result; - return result; - } - function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; - } - - hooks.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate$2, - ss : translate$2, - m : translate$2, - mm : translate$2, - h : translate$2, - hh : translate$2, - d : translate$2, - dd : translate$2, - M : translate$2, - MM : translate$2, - y : translate$2, - yy : translate$2 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D. MMMM, YYYY HH:mm' - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - ss : '%d sekundir', - m : 'ein minutt', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaði', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('fr-ch', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { - switch (period) { - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'D': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' - }, - dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal : function (number, period) { - switch (period) { - // TODO: Return 'e' when day of month > 1. Move this case inside - // block for masculine words below. - // See https://github.com/moment/moment/issues/3375 - case 'D': - return number + (number === 1 ? 'er' : ''); - - // Words with masculine grammatical gender: mois, trimestre, jour - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - return number + (number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return number + (number === 1 ? 're' : 'e'); - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); - - hooks.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - monthsParseExact : true, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[hjoed om] LT', - nextDay: '[moarn om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[juster om] LT', - lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - ss : '%d sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var months$5 = [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ]; - - var monthsShort$4 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; - - var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; - - var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; - - var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; - - hooks.defineLocale('gd', { - months : months$5, - monthsShort : monthsShort$4, - monthsParseExact : true, - weekdays : weekdays$1, - weekdaysShort : weekdaysShort, - weekdaysMin : weekdaysMin, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[An-diugh aig] LT', - nextDay : '[A-màireach aig] LT', - nextWeek : 'dddd [aig] LT', - lastDay : '[An-dè aig] LT', - lastWeek : 'dddd [seo chaidh] [aig] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ann an %s', - past : 'bho chionn %s', - s : 'beagan diogan', - ss : '%d diogan', - m : 'mionaid', - mm : '%d mionaidean', - h : 'uair', - hh : '%d uairean', - d : 'latha', - dd : '%d latha', - M : 'mìos', - MM : '%d mìosan', - y : 'bliadhna', - yy : '%d bliadhna' - }, - dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, - ordinal : function (number) { - var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('gl', { - months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), - monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str.indexOf('un') === 0) { - return 'n' + str; - } - return 'en ' + str; - }, - past : 'hai %s', - s : 'uns segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$4(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['thodde secondanim', 'thodde second'], - 'ss': [number + ' secondanim', number + ' second'], - 'm': ['eka mintan', 'ek minute'], - 'mm': [number + ' mintanim', number + ' mintam'], - 'h': ['eka horan', 'ek hor'], - 'hh': [number + ' horanim', number + ' horam'], - 'd': ['eka disan', 'ek dis'], - 'dd': [number + ' disanim', number + ' dis'], - 'M': ['eka mhoinean', 'ek mhoino'], - 'MM': [number + ' mhoineanim', number + ' mhoine'], - 'y': ['eka vorsan', 'ek voros'], - 'yy': [number + ' vorsanim', number + ' vorsam'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - hooks.defineLocale('gom-latn', { - months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), - monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), - weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'A h:mm [vazta]', - LTS : 'A h:mm:ss [vazta]', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY A h:mm [vazta]', - LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]' - }, - calendar : { - sameDay: '[Aiz] LT', - nextDay: '[Faleam] LT', - nextWeek: '[Ieta to] dddd[,] LT', - lastDay: '[Kal] LT', - lastWeek: '[Fatlo] dddd[,] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s', - past : '%s adim', - s : processRelativeTime$4, - ss : processRelativeTime$4, - m : processRelativeTime$4, - mm : processRelativeTime$4, - h : processRelativeTime$4, - hh : processRelativeTime$4, - d : processRelativeTime$4, - dd : processRelativeTime$4, - M : processRelativeTime$4, - MM : processRelativeTime$4, - y : processRelativeTime$4, - yy : processRelativeTime$4 - }, - dayOfMonthOrdinalParse : /\d{1,2}(er)/, - ordinal : function (number, period) { - switch (period) { - // the ordinal 'er' only applies to day of the month - case 'D': - return number + 'er'; - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - case 'w': - case 'W': - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - }, - meridiemParse: /rati|sokalli|donparam|sanje/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'rati') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokalli') { - return hour; - } else if (meridiem === 'donparam') { - return hour > 12 ? hour : hour + 12; - } else if (meridiem === 'sanje') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'rati'; - } else if (hour < 12) { - return 'sokalli'; - } else if (hour < 16) { - return 'donparam'; - } else if (hour < 20) { - return 'sanje'; - } else { - return 'rati'; - } - } - }); - - //! moment.js locale configuration - - var symbolMap$6 = { - '1': '૧', - '2': '૨', - '3': '૩', - '4': '૪', - '5': '૫', - '6': '૬', - '7': '૭', - '8': '૮', - '9': '૯', - '0': '૦' - }, - numberMap$5 = { - '૧': '1', - '૨': '2', - '૩': '3', - '૪': '4', - '૫': '5', - '૬': '6', - '૭': '7', - '૮': '8', - '૯': '9', - '૦': '0' - }; - - hooks.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), - monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), - weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), - weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), - longDateFormat: { - LT: 'A h:mm વાગ્યે', - LTS: 'A h:mm:ss વાગ્યે', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' - }, - calendar: { - sameDay: '[આજ] LT', - nextDay: '[કાલે] LT', - nextWeek: 'dddd, LT', - lastDay: '[ગઇકાલે] LT', - lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L' - }, - relativeTime: { - future: '%s મા', - past: '%s પેહલા', - s: 'અમુક પળો', - ss: '%d સેકંડ', - m: 'એક મિનિટ', - mm: '%d મિનિટ', - h: 'એક કલાક', - hh: '%d કલાક', - d: 'એક દિવસ', - dd: '%d દિવસ', - M: 'એક મહિનો', - MM: '%d મહિનો', - y: 'એક વર્ષ', - yy: '%d વર્ષ' - }, - preparse: function (string) { - return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { - return numberMap$5[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$6[match]; - }); - }, - // Gujarati notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. - meridiemParse: /રાત|બપોર|સવાર|સાંજ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'રાત') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'સવાર') { - return hour; - } else if (meridiem === 'બપોર') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'સાંજ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'રાત'; - } else if (hour < 10) { - return 'સવાર'; - } else if (hour < 17) { - return 'બપોર'; - } else if (hour < 20) { - return 'સાંજ'; - } else { - return 'રાત'; - } - }, - week: { - dow: 0, // Sunday is the first day of the week. - doy: 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY HH:mm', - LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'בעוד %s', - past : 'לפני %s', - s : 'מספר שניות', - ss : '%d שניות', - m : 'דקה', - mm : '%d דקות', - h : 'שעה', - hh : function (number) { - if (number === 2) { - return 'שעתיים'; - } - return number + ' שעות'; - }, - d : 'יום', - dd : function (number) { - if (number === 2) { - return 'יומיים'; - } - return number + ' ימים'; - }, - M : 'חודש', - MM : function (number) { - if (number === 2) { - return 'חודשיים'; - } - return number + ' חודשים'; - }, - y : 'שנה', - yy : function (number) { - if (number === 2) { - return 'שנתיים'; - } else if (number % 10 === 0 && number !== 10) { - return number + ' שנה'; - } - return number + ' שנים'; - } - }, - meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM : function (input) { - return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 5) { - return 'לפנות בוקר'; - } else if (hour < 10) { - return 'בבוקר'; - } else if (hour < 12) { - return isLower ? 'לפנה"צ' : 'לפני הצהריים'; - } else if (hour < 18) { - return isLower ? 'אחה"צ' : 'אחרי הצהריים'; - } else { - return 'בערב'; - } - } - }); - - //! moment.js locale configuration - - var symbolMap$7 = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$6 = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - hooks.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), - monthsParseExact: true, - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm बजे', - LTS : 'A h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s में', - past : '%s पहले', - s : 'कुछ ही क्षण', - ss : '%d सेकंड', - m : 'एक मिनट', - mm : '%d मिनट', - h : 'एक घंटा', - hh : '%d घंटे', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महीने', - MM : '%d महीने', - y : 'एक वर्ष', - yy : '%d वर्ष' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$6[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$7[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सुबह') { - return hour; - } else if (meridiem === 'दोपहर') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'शाम') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'रात'; - } else if (hour < 10) { - return 'सुबह'; - } else if (hour < 17) { - return 'दोपहर'; - } else if (hour < 20) { - return 'शाम'; - } else { - return 'रात'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function translate$3(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - if (number === 1) { - result += 'sekunda'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sekunde'; - } else { - result += 'sekundi'; - } - return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - hooks.defineLocale('hr', { - months : { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') - }, - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), - monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate$3, - m : translate$3, - mm : translate$3, - h : translate$3, - hh : translate$3, - d : 'dan', - dd : translate$3, - M : 'mjesec', - MM : translate$3, - y : 'godinu', - yy : translate$3 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - function translate$4(number, withoutSuffix, key, isFuture) { - var num = number; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'ss': - return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - return ''; - } - function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; - } - - hooks.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' - }, - meridiemParse: /de|du/i, - isPM: function (input) { - return input.charAt(1).toLowerCase() === 'u'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate$4, - ss : translate$4, - m : translate$4, - mm : translate$4, - h : translate$4, - hh : translate$4, - d : translate$4, - dd : translate$4, - M : translate$4, - MM : translate$4, - y : translate$4, - yy : translate$4 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('hy-am', { - months : { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') - }, - monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY թ.', - LLL : 'D MMMM YYYY թ., HH:mm', - LLLL : 'dddd, D MMMM YYYY թ., HH:mm' - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : '%s հետո', - past : '%s առաջ', - s : 'մի քանի վայրկյան', - ss : '%d վայրկյան', - m : 'րոպե', - mm : '%d րոպե', - h : 'ժամ', - hh : '%d ժամ', - d : 'օր', - dd : '%d օր', - M : 'ամիս', - MM : '%d ամիս', - y : 'տարի', - yy : '%d տարի' - }, - meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, - isPM: function (input) { - return /^(ցերեկվա|երեկոյան)$/.test(input); - }, - meridiem : function (hour) { - if (hour < 4) { - return 'գիշերվա'; - } else if (hour < 12) { - return 'առավոտվա'; - } else if (hour < 17) { - return 'ցերեկվա'; - } else { - return 'երեկոյան'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'siang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sore' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - ss : '%d detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function plural$2(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; - } - function translate$5(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'ss': - if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum'); - } - return result + 'sekúnda'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural$2(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural$2(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } - - hooks.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate$5, - ss : translate$5, - m : translate$5, - mm : translate$5, - h : 'klukkustund', - hh : translate$5, - d : translate$5, - dd : translate$5, - M : translate$5, - MM : translate$5, - y : translate$5, - yy : translate$5 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; - }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ja', { - months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日 dddd HH:mm', - l : 'YYYY/MM/DD', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日(ddd) HH:mm' - }, - meridiemParse: /午前|午後/i, - isPM : function (input) { - return input === '午後'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return '午前'; - } else { - return '午後'; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : function (now) { - if (now.week() < this.week()) { - return '[来週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - lastDay : '[昨日] LT', - lastWeek : function (now) { - if (this.week() < now.week()) { - return '[先週]dddd LT'; - } else { - return 'dddd LT'; - } - }, - sameElse : 'L' - }, - dayOfMonthOrdinalParse : /\d{1,2}日/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - default: - return number; - } - }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - ss : '%d秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'enjing') { - return hour; - } else if (meridiem === 'siyang') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'sonten' || meridiem === 'ndalu') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'enjing'; - } else if (hours < 15) { - return 'siyang'; - } else if (hours < 19) { - return 'sonten'; - } else { - return 'ndalu'; - } - }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - ss : '%d detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ka', { - months : { - standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), - isFormat: /(წინა|შემდეგ)/ - }, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, 'ის წინ'); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, 'წლის წინ'); - } - }, - s : 'რამდენიმე წამი', - ss : '%d წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' - }, - dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { - if (number === 0) { - return number; - } - if (number === 1) { - return number + '-ლი'; - } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return 'მე-' + number; - } - return number + '-ე'; - }, - week : { - dow : 1, - doy : 7 - } - }); - - //! moment.js locale configuration - - var suffixes$1 = { - 0: '-ші', - 1: '-ші', - 2: '-ші', - 3: '-ші', - 4: '-ші', - 5: '-ші', - 6: '-шы', - 7: '-ші', - 8: '-ші', - 9: '-шы', - 10: '-шы', - 20: '-шы', - 30: '-шы', - 40: '-шы', - 50: '-ші', - 60: '-шы', - 70: '-ші', - 80: '-ші', - 90: '-шы', - 100: '-ші' - }; - - hooks.defineLocale('kk', { - months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), - monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), - weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Бүгін сағат] LT', - nextDay : '[Ертең сағат] LT', - nextWeek : 'dddd [сағат] LT', - lastDay : '[Кеше сағат] LT', - lastWeek : '[Өткен аптаның] dddd [сағат] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ішінде', - past : '%s бұрын', - s : 'бірнеше секунд', - ss : '%d секунд', - m : 'бір минут', - mm : '%d минут', - h : 'бір сағат', - hh : '%d сағат', - d : 'бір күн', - dd : '%d күн', - M : 'бір ай', - MM : '%d ай', - y : 'бір жыл', - yy : '%d жыл' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal : function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$8 = { - '1': '១', - '2': '២', - '3': '៣', - '4': '៤', - '5': '៥', - '6': '៦', - '7': '៧', - '8': '៨', - '9': '៩', - '0': '០' - }, numberMap$7 = { - '១': '1', - '២': '2', - '៣': '3', - '៤': '4', - '៥': '5', - '៦': '6', - '៧': '7', - '៨': '8', - '៩': '9', - '០': '0' - }; - - hooks.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( - '_' - ), - weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), - weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), - weekdaysParseExact: true, - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' - }, - meridiemParse: /ព្រឹក|ល្ងាច/, - isPM: function (input) { - return input === 'ល្ងាច'; - }, - meridiem: function (hour, minute, isLower) { - if (hour < 12) { - return 'ព្រឹក'; - } else { - return 'ល្ងាច'; - } - }, - calendar: { - sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%sទៀត', - past: '%sមុន', - s: 'ប៉ុន្មានវិនាទី', - ss: '%d វិនាទី', - m: 'មួយនាទី', - mm: '%d នាទី', - h: 'មួយម៉ោង', - hh: '%d ម៉ោង', - d: 'មួយថ្ងៃ', - dd: '%d ថ្ងៃ', - M: 'មួយខែ', - MM: '%d ខែ', - y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' - }, - dayOfMonthOrdinalParse : /ទី\d{1,2}/, - ordinal : 'ទី%d', - preparse: function (string) { - return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { - return numberMap$7[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$8[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$9 = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦' - }, - numberMap$8 = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0' - }; - - hooks.defineLocale('kn', { - months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), - monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'), - monthsParseExact: true, - weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), - weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[ಇಂದು] LT', - nextDay : '[ನಾಳೆ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ನಿನ್ನೆ] LT', - lastWeek : '[ಕೊನೆಯ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ನಂತರ', - past : '%s ಹಿಂದೆ', - s : 'ಕೆಲವು ಕ್ಷಣಗಳು', - ss : '%d ಸೆಕೆಂಡುಗಳು', - m : 'ಒಂದು ನಿಮಿಷ', - mm : '%d ನಿಮಿಷ', - h : 'ಒಂದು ಗಂಟೆ', - hh : '%d ಗಂಟೆ', - d : 'ಒಂದು ದಿನ', - dd : '%d ದಿನ', - M : 'ಒಂದು ತಿಂಗಳು', - MM : '%d ತಿಂಗಳು', - y : 'ಒಂದು ವರ್ಷ', - yy : '%d ವರ್ಷ' - }, - preparse: function (string) { - return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap$8[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$9[match]; - }); - }, - meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ರಾತ್ರಿ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { - return hour; - } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ಸಂಜೆ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ರಾತ್ರಿ'; - } else if (hour < 10) { - return 'ಬೆಳಿಗ್ಗೆ'; - } else if (hour < 17) { - return 'ಮಧ್ಯಾಹ್ನ'; - } else if (hour < 20) { - return 'ಸಂಜೆ'; - } else { - return 'ರಾತ್ರಿ'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal : function (number) { - return number + 'ನೇ'; - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h:mm', - LLLL : 'YYYY년 MMMM D일 dddd A h:mm', - l : 'YYYY.MM.DD.', - ll : 'YYYY년 MMMM D일', - lll : 'YYYY년 MMMM D일 A h:mm', - llll : 'YYYY년 MMMM D일 dddd A h:mm' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇 초', - ss : '%d초', - m : '1분', - mm : '%d분', - h : '한 시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한 달', - MM : '%d달', - y : '일 년', - yy : '%d년' - }, - dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '일'; - case 'M': - return number + '월'; - case 'w': - case 'W': - return number + '주'; - default: - return number; - } - }, - meridiemParse : /오전|오후/, - isPM : function (token) { - return token === '오후'; - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - } - }); - - //! moment.js locale configuration - - var suffixes$2 = { - 0: '-чү', - 1: '-чи', - 2: '-чи', - 3: '-чү', - 4: '-чү', - 5: '-чи', - 6: '-чы', - 7: '-чи', - 8: '-чи', - 9: '-чу', - 10: '-чу', - 20: '-чы', - 30: '-чу', - 40: '-чы', - 50: '-чү', - 60: '-чы', - 70: '-чи', - 80: '-чи', - 90: '-чу', - 100: '-чү' - }; - - hooks.defineLocale('ky', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), - weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Бүгүн саат] LT', - nextDay : '[Эртең саат] LT', - nextWeek : 'dddd [саат] LT', - lastDay : '[Кече саат] LT', - lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ичинде', - past : '%s мурун', - s : 'бирнече секунд', - ss : '%d секунд', - m : 'бир мүнөт', - mm : '%d мүнөт', - h : 'бир саат', - hh : '%d саат', - d : 'бир күн', - dd : '%d күн', - M : 'бир ай', - MM : '%d ай', - y : 'бир жыл', - yy : '%d жыл' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal : function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$5(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'a ' + string; - } - return 'an ' + string; - } - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return 'viru ' + string; - } - return 'virun ' + string; - } - /** - * Returns true if the word before the given number loses the '-n' ending. - * e.g. 'an 10 Deeg' but 'a 5 Deeg' - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; - } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - - hooks.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), - weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), - weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm [Auer]', - LTS: 'H:mm:ss [Auer]', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' - }, - calendar: { - sameDay: '[Haut um] LT', - sameElse: 'L', - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: function () { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch (this.day()) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - } - }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - ss : '%d Sekonnen', - m : processRelativeTime$5, - mm : '%d Minutten', - h : processRelativeTime$5, - hh : '%d Stonnen', - d : processRelativeTime$5, - dd : '%d Deeg', - M : processRelativeTime$5, - MM : '%d Méint', - y : processRelativeTime$5, - yy : '%d Joer' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('lo', { - months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), - monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), - weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), - weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'ວັນdddd D MMMM YYYY HH:mm' - }, - meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, - isPM: function (input) { - return input === 'ຕອນແລງ'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ຕອນເຊົ້າ'; - } else { - return 'ຕອນແລງ'; - } - }, - calendar : { - sameDay : '[ມື້ນີ້ເວລາ] LT', - nextDay : '[ມື້ອື່ນເວລາ] LT', - nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', - lastDay : '[ມື້ວານນີ້ເວລາ] LT', - lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ອີກ %s', - past : '%sຜ່ານມາ', - s : 'ບໍ່ເທົ່າໃດວິນາທີ', - ss : '%d ວິນາທີ' , - m : '1 ນາທີ', - mm : '%d ນາທີ', - h : '1 ຊົ່ວໂມງ', - hh : '%d ຊົ່ວໂມງ', - d : '1 ມື້', - dd : '%d ມື້', - M : '1 ເດືອນ', - MM : '%d ເດືອນ', - y : '1 ປີ', - yy : '%d ປີ' - }, - dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal : function (number) { - return 'ທີ່' + number; - } - }); - - //! moment.js locale configuration - - var units = { - 'ss' : 'sekundė_sekundžių_sekundes', - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' - }; - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return 'kelios sekundės'; - } else { - return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; - } - } - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); - } - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); - } - function forms(key) { - return units[key].split('_'); - } - function translate$6(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - hooks.defineLocale('lt', { - months : { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ - }, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), - isFormat: /dddd HH:mm/ - }, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - ss : translate$6, - m : translateSingular, - mm : translate$6, - h : translateSingular, - hh : translate$6, - d : translateSingular, - dd : translate$6, - M : translateSingular, - MM : translate$6, - y : translateSingular, - yy : translate$6 - }, - dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var units$1 = { - 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') - }; - /** - * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. - */ - function format$1(forms, number, withoutSuffix) { - if (withoutSuffix) { - // E.g. "21 minūte", "3 minūtes". - return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; - } else { - // E.g. "21 minūtes" as in "pēc 21 minūtes". - // E.g. "3 minūtēm" as in "pēc 3 minūtēm". - return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; - } - } - function relativeTimeWithPlural$1(number, withoutSuffix, key) { - return number + ' ' + format$1(units$1[key], number, withoutSuffix); - } - function relativeTimeWithSingular(number, withoutSuffix, key) { - return format$1(units$1[key], number, withoutSuffix); - } - function relativeSeconds(number, withoutSuffix) { - return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; - } - - hooks.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - ss : relativeTimeWithPlural$1, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural$1, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural$1, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural$1, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural$1, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural$1 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var translator = { - words: { //Different grammatical cases - ss: ['sekund', 'sekunda', 'sekundi'], - m: ['jedan minut', 'jednog minuta'], - mm: ['minut', 'minuta', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } - }; - - hooks.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact : true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sjutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), - monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, - monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, - weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), - weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm' - }, - calendar: { - sameDay: '[i teie mahana, i] LT', - nextDay: '[apopo i] LT', - nextWeek: 'dddd [i] LT', - lastDay: '[inanahi i] LT', - lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L' - }, - relativeTime: { - future: 'i roto i %s', - past: '%s i mua', - s: 'te hēkona ruarua', - ss: '%d hēkona', - m: 'he meneti', - mm: '%d meneti', - h: 'te haora', - hh: '%d haora', - d: 'he ra', - dd: '%d ra', - M: 'he marama', - MM: '%d marama', - y: 'he tau', - yy: '%d tau' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'D.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : '[Во] dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'после %s', - past : 'пред %s', - s : 'неколку секунди', - ss : '%d секунди', - m : 'минута', - mm : '%d минути', - h : 'час', - hh : '%d часа', - d : 'ден', - dd : '%d дена', - M : 'месец', - MM : '%d месеци', - y : 'година', - yy : '%d години' - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - monthsParseExact : true, - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), - longDateFormat : { - LT : 'A h:mm -നു', - LTS : 'A h:mm:ss -നു', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm -നു', - LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s കഴിഞ്ഞ്', - past : '%s മുൻപ്', - s : 'അൽപ നിമിഷങ്ങൾ', - ss : '%d സെക്കൻഡ്', - m : 'ഒരു മിനിറ്റ്', - mm : '%d മിനിറ്റ്', - h : 'ഒരു മണിക്കൂർ', - hh : '%d മണിക്കൂർ', - d : 'ഒരു ദിവസം', - dd : '%d ദിവസം', - M : 'ഒരു മാസം', - MM : '%d മാസം', - y : 'ഒരു വർഷം', - yy : '%d വർഷം' - }, - meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ((meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം') { - return hour + 12; - } else { - return hour; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'രാത്രി'; - } else if (hour < 12) { - return 'രാവിലെ'; - } else if (hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } else if (hour < 20) { - return 'വൈകുന്നേരം'; - } else { - return 'രാത്രി'; - } - } - }); - - //! moment.js locale configuration - - function translate$7(number, withoutSuffix, key, isFuture) { - switch (key) { - case 's': - return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; - case 'ss': - return number + (withoutSuffix ? ' секунд' : ' секундын'); - case 'm': - case 'mm': - return number + (withoutSuffix ? ' минут' : ' минутын'); - case 'h': - case 'hh': - return number + (withoutSuffix ? ' цаг' : ' цагийн'); - case 'd': - case 'dd': - return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); - case 'M': - case 'MM': - return number + (withoutSuffix ? ' сар' : ' сарын'); - case 'y': - case 'yy': - return number + (withoutSuffix ? ' жил' : ' жилийн'); - default: - return number; - } - } - - hooks.defineLocale('mn', { - months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'), - monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'), - monthsParseExact : true, - weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY оны MMMMын D', - LLL : 'YYYY оны MMMMын D HH:mm', - LLLL : 'dddd, YYYY оны MMMMын D HH:mm' - }, - meridiemParse: /ҮӨ|ҮХ/i, - isPM : function (input) { - return input === 'ҮХ'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ҮӨ'; - } else { - return 'ҮХ'; - } - }, - calendar : { - sameDay : '[Өнөөдөр] LT', - nextDay : '[Маргааш] LT', - nextWeek : '[Ирэх] dddd LT', - lastDay : '[Өчигдөр] LT', - lastWeek : '[Өнгөрсөн] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s дараа', - past : '%s өмнө', - s : translate$7, - ss : translate$7, - m : translate$7, - mm : translate$7, - h : translate$7, - hh : translate$7, - d : translate$7, - dd : translate$7, - M : translate$7, - MM : translate$7, - y : translate$7, - yy : translate$7 - }, - dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + ' өдөр'; - default: - return number; - } - } - }); - - //! moment.js locale configuration - - var symbolMap$10 = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$9 = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - function relativeTimeMr(number, withoutSuffix, string, isFuture) - { - var output = ''; - if (withoutSuffix) { - switch (string) { - case 's': output = 'काही सेकंद'; break; - case 'ss': output = '%d सेकंद'; break; - case 'm': output = 'एक मिनिट'; break; - case 'mm': output = '%d मिनिटे'; break; - case 'h': output = 'एक तास'; break; - case 'hh': output = '%d तास'; break; - case 'd': output = 'एक दिवस'; break; - case 'dd': output = '%d दिवस'; break; - case 'M': output = 'एक महिना'; break; - case 'MM': output = '%d महिने'; break; - case 'y': output = 'एक वर्ष'; break; - case 'yy': output = '%d वर्षे'; break; - } - } - else { - switch (string) { - case 's': output = 'काही सेकंदां'; break; - case 'ss': output = '%d सेकंदां'; break; - case 'm': output = 'एका मिनिटा'; break; - case 'mm': output = '%d मिनिटां'; break; - case 'h': output = 'एका तासा'; break; - case 'hh': output = '%d तासां'; break; - case 'd': output = 'एका दिवसा'; break; - case 'dd': output = '%d दिवसां'; break; - case 'M': output = 'एका महिन्या'; break; - case 'MM': output = '%d महिन्यां'; break; - case 'y': output = 'एका वर्षा'; break; - case 'yy': output = '%d वर्षां'; break; - } - } - return output.replace(/%d/i, number); - } - - hooks.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - monthsParseExact : true, - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), - longDateFormat : { - LT : 'A h:mm वाजता', - LTS : 'A h:mm:ss वाजता', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm वाजता', - LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future: '%sमध्ये', - past: '%sपूर्वी', - s: relativeTimeMr, - ss: relativeTimeMr, - m: relativeTimeMr, - mm: relativeTimeMr, - h: relativeTimeMr, - hh: relativeTimeMr, - d: relativeTimeMr, - dd: relativeTimeMr, - M: relativeTimeMr, - MM: relativeTimeMr, - y: relativeTimeMr, - yy: relativeTimeMr - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$9[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$10[match]; - }); - }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { - return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { - return 'सकाळी'; - } else if (hour < 17) { - return 'दुपारी'; - } else if (hour < 20) { - return 'सायंकाळी'; - } else { - return 'रात्री'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' - }, - meridiemParse: /pagi|tengahari|petang|malam/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'pagi') { - return hour; - } else if (meridiem === 'tengahari') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'petang' || meridiem === 'malam') { - return hour + 12; - } - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('mt', { - months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'), - monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'), - weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Illum fil-]LT', - nextDay : '[Għada fil-]LT', - nextWeek : 'dddd [fil-]LT', - lastDay : '[Il-bieraħ fil-]LT', - lastWeek : 'dddd [li għadda] [fil-]LT', - sameElse : 'L' - }, - relativeTime : { - future : 'f’ %s', - past : '%s ilu', - s : 'ftit sekondi', - ss : '%d sekondi', - m : 'minuta', - mm : '%d minuti', - h : 'siegħa', - hh : '%d siegħat', - d : 'ġurnata', - dd : '%d ġranet', - M : 'xahar', - MM : '%d xhur', - y : 'sena', - yy : '%d sni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$11 = { - '1': '၁', - '2': '၂', - '3': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, numberMap$10 = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; - - hooks.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), - monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'DD/MM/YYYY', - LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' - }, - calendar: { - sameDay: '[ယနေ.] LT [မှာ]', - nextDay: '[မနက်ဖြန်] LT [မှာ]', - nextWeek: 'dddd LT [မှာ]', - lastDay: '[မနေ.က] LT [မှာ]', - lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' - }, - relativeTime: { - future: 'လာမည့် %s မှာ', - past: 'လွန်ခဲ့သော %s က', - s: 'စက္ကန်.အနည်းငယ်', - ss : '%d စက္ကန့်', - m: 'တစ်မိနစ်', - mm: '%d မိနစ်', - h: 'တစ်နာရီ', - hh: '%d နာရီ', - d: 'တစ်ရက်', - dd: '%d ရက်', - M: 'တစ်လ', - MM: '%d လ', - y: 'တစ်နှစ်', - yy: '%d နှစ်' - }, - preparse: function (string) { - return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap$10[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$11[match]; - }); - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'noen sekunder', - ss : '%d sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$12 = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$11 = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - - hooks.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - monthsParseExact : true, - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'Aको h:mm बजे', - LTS : 'Aको h:mm:ss बजे', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, Aको h:mm बजे', - LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$11[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$12[match]; - }); - }, - meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'राति') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'बिहान') { - return hour; - } else if (meridiem === 'दिउँसो') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'साँझ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return 'राति'; - } else if (hour < 12) { - return 'बिहान'; - } else if (hour < 16) { - return 'दिउँसो'; - } else if (hour < 20) { - return 'साँझ'; - } else { - return 'राति'; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोलि] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%sमा', - past : '%s अगाडि', - s : 'केही क्षण', - ss : '%d सेकेण्ड', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$2 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$3 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; - - hooks.defineLocale('nl-be', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots$1; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots$1[m.month()]; - } else { - return monthsShortWithDots$1[m.month()]; - } - }, - - monthsRegex: monthsRegex$3, - monthsShortRegex: monthsRegex$3, - monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - - monthsParse : monthsParse$2, - longMonthsParse : monthsParse$2, - shortMonthsParse : monthsParse$2, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$3 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$4 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; - - hooks.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { - if (!m) { - return monthsShortWithDots$2; - } else if (/-MMM-/.test(format)) { - return monthsShortWithoutDots$2[m.month()]; - } else { - return monthsShortWithDots$2[m.month()]; - } - }, - - monthsRegex: monthsRegex$4, - monthsShortRegex: monthsRegex$4, - monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, - monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - - monthsParse : monthsParse$3, - longMonthsParse : monthsParse$3, - shortMonthsParse : monthsParse$3, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' - }, - dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s sidan', - s : 'nokre sekund', - ss : '%d sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$13 = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦' - }, - numberMap$12 = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0' - }; - - hooks.defineLocale('pa-in', { - // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. - months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), - weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - longDateFormat : { - LT : 'A h:mm ਵਜੇ', - LTS : 'A h:mm:ss ਵਜੇ', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm ਵਜੇ', - LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' - }, - calendar : { - sameDay : '[ਅਜ] LT', - nextDay : '[ਕਲ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ਕਲ] LT', - lastWeek : '[ਪਿਛਲੇ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s ਵਿੱਚ', - past : '%s ਪਿਛਲੇ', - s : 'ਕੁਝ ਸਕਿੰਟ', - ss : '%d ਸਕਿੰਟ', - m : 'ਇਕ ਮਿੰਟ', - mm : '%d ਮਿੰਟ', - h : 'ਇੱਕ ਘੰਟਾ', - hh : '%d ਘੰਟੇ', - d : 'ਇੱਕ ਦਿਨ', - dd : '%d ਦਿਨ', - M : 'ਇੱਕ ਮਹੀਨਾ', - MM : '%d ਮਹੀਨੇ', - y : 'ਇੱਕ ਸਾਲ', - yy : '%d ਸਾਲ' - }, - preparse: function (string) { - return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap$12[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$13[match]; - }); - }, - // Punjabi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. - meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ਰਾਤ') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ਸਵੇਰ') { - return hour; - } else if (meridiem === 'ਦੁਪਹਿਰ') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'ਸ਼ਾਮ') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ਰਾਤ'; - } else if (hour < 10) { - return 'ਸਵੇਰ'; - } else if (hour < 17) { - return 'ਦੁਪਹਿਰ'; - } else if (hour < 20) { - return 'ਸ਼ਾਮ'; - } else { - return 'ਰਾਤ'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); - function plural$3(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); - } - function translate$8(number, withoutSuffix, key) { - var result = number + ' '; - switch (key) { - case 'ss': - return result + (plural$3(number) ? 'sekundy' : 'sekund'); - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural$3(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural$3(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural$3(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural$3(number) ? 'lata' : 'lat'); - } - } - - hooks.defineLocale('pl', { - months : function (momentToFormat, format) { - if (!momentToFormat) { - return monthsNominative; - } else if (format === '') { - // Hack: if format empty we know this is used to generate - // RegExp by moment. Give then back both valid forms of months - // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; - } else if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[W niedzielę o] LT'; - - case 2: - return '[We wtorek o] LT'; - - case 3: - return '[W środę o] LT'; - - case 6: - return '[W sobotę o] LT'; - - default: - return '[W] dddd [o] LT'; - } - }, - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - ss : translate$8, - m : translate$8, - mm : translate$8, - h : translate$8, - hh : translate$8, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate$8, - y : 'rok', - yy : translate$8 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('pt-br', { - months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), - monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'poucos segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº' - }); - - //! moment.js locale configuration - - hooks.defineLocale('pt', { - months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), - monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function relativeTimeWithPlural$2(number, withoutSuffix, key) { - var format = { - 'ss': 'secunde', - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - return number + separator + format[key]; - } - - hooks.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[azi la] LT', - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - ss : relativeTimeWithPlural$2, - m : 'un minut', - mm : relativeTimeWithPlural$2, - h : 'o oră', - hh : relativeTimeWithPlural$2, - d : 'o zi', - dd : relativeTimeWithPlural$2, - M : 'o lună', - MM : relativeTimeWithPlural$2, - y : 'un an', - yy : relativeTimeWithPlural$2 - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function plural$4(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural$3(number, withoutSuffix, key) { - var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural$4(format[key], +number); - } - } - var monthsParse$4 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; - - // http://new.gramota.ru/spravka/rules/139-prop : § 103 - // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 - // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 - hooks.defineLocale('ru', { - months : { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') - }, - monthsShort : { - // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') - }, - weekdays : { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ - }, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : monthsParse$4, - longMonthsParse : monthsParse$4, - shortMonthsParse : monthsParse$4, - - // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки - monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - - // копия предыдущего - monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - - // полные названия с падежами - monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, - - // Выражение, которое соотвествует только сокращённым формам - monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., H:mm', - LLLL : 'dddd, D MMMM YYYY г., H:mm' - }, - calendar : { - sameDay: '[Сегодня, в] LT', - nextDay: '[Завтра, в] LT', - lastDay: '[Вчера, в] LT', - nextWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В следующее] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В следующий] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В следующую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - lastWeek: function (now) { - if (now.week() !== this.week()) { - switch (this.day()) { - case 0: - return '[В прошлое] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd, [в] LT'; - } - } else { - if (this.day() === 2) { - return '[Во] dddd, [в] LT'; - } else { - return '[В] dddd, [в] LT'; - } - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - ss : relativeTimeWithPlural$3, - m : relativeTimeWithPlural$3, - mm : relativeTimeWithPlural$3, - h : 'час', - hh : relativeTimeWithPlural$3, - d : 'день', - dd : relativeTimeWithPlural$3, - M : 'месяц', - MM : relativeTimeWithPlural$3, - y : 'год', - yy : relativeTimeWithPlural$3 - }, - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночи'; - } else if (hour < 12) { - return 'утра'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечера'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var months$6 = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' - ]; - var days$1 = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' - ]; - - hooks.defineLocale('sd', { - months : months$6, - monthsShort : months$6, - weekdays : days$1, - weekdaysShort : days$1, - weekdaysMin : days$1, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd، D MMMM YYYY HH:mm' - }, - meridiemParse: /صبح|شام/, - isPM : function (input) { - return 'شام' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar : { - sameDay : '[اڄ] LT', - nextDay : '[سڀاڻي] LT', - nextWeek : 'dddd [اڳين هفتي تي] LT', - lastDay : '[ڪالهه] LT', - lastWeek : '[گزريل هفتي] dddd [تي] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s پوء', - past : '%s اڳ', - s : 'چند سيڪنڊ', - ss : '%d سيڪنڊ', - m : 'هڪ منٽ', - mm : '%d منٽ', - h : 'هڪ ڪلاڪ', - hh : '%d ڪلاڪ', - d : 'هڪ ڏينهن', - dd : '%d ڏينهن', - M : 'هڪ مهينو', - MM : '%d مهينا', - y : 'هڪ سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('se', { - months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), - monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), - weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), - weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin : 's_v_m_g_d_b_L'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'MMMM D. [b.] YYYY', - LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' - }, - calendar : { - sameDay: '[otne ti] LT', - nextDay: '[ihttin ti] LT', - nextWeek: 'dddd [ti] LT', - lastDay: '[ikte ti] LT', - lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s geažes', - past : 'maŋit %s', - s : 'moadde sekunddat', - ss: '%d sekunddat', - m : 'okta minuhta', - mm : '%d minuhtat', - h : 'okta diimmu', - hh : '%d diimmut', - d : 'okta beaivi', - dd : '%d beaivvit', - M : 'okta mánnu', - MM : '%d mánut', - y : 'okta jahki', - yy : '%d jagit' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - /*jshint -W100*/ - hooks.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' - }, - relativeTime : { - future : '%sකින්', - past : '%sකට පෙර', - s : 'තත්පර කිහිපය', - ss : 'තත්පර %d', - m : 'මිනිත්තුව', - mm : 'මිනිත්තු %d', - h : 'පැය', - hh : 'පැය %d', - d : 'දිනය', - dd : 'දින %d', - M : 'මාසය', - MM : 'මාස %d', - y : 'වසර', - yy : 'වසර %d' - }, - dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { - return number + ' වැනි'; - }, - meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM : function (input) { - return input === 'ප.ව.' || input === 'පස් වරු'; - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'ප.ව.' : 'පස් වරු'; - } else { - return isLower ? 'පෙ.ව.' : 'පෙර වරු'; - } - } - }); - - //! moment.js locale configuration - - var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), - monthsShort$5 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function plural$5(n) { - return (n > 1) && (n < 5); - } - function translate$9(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'sekundy' : 'sekúnd'); - } else { - return result + 'sekundami'; - } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural$5(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } - } - - hooks.defineLocale('sk', { - months : months$7, - monthsShort : monthsShort$5, - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { - LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' - }, - calendar : { - sameDay: '[dnes o] LT', - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate$9, - ss : translate$9, - m : translate$9, - mm : translate$9, - h : translate$9, - hh : translate$9, - d : translate$9, - dd : translate$9, - M : translate$9, - MM : translate$9, - y : translate$9, - yy : translate$9 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - function processRelativeTime$6(number, withoutSuffix, key, isFuture) { - var result = number + ' '; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; - case 'ss': - if (number === 1) { - result += withoutSuffix ? 'sekundo' : 'sekundi'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; - } else { - result += withoutSuffix || isFuture ? 'sekund' : 'sekund'; - } - return result; - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += withoutSuffix ? 'minuta' : 'minuto'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'minute' : 'minutami'; - } else { - result += withoutSuffix || isFuture ? 'minut' : 'minutami'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += withoutSuffix ? 'ura' : 'uro'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'uri' : 'urama'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'ure' : 'urami'; - } else { - result += withoutSuffix || isFuture ? 'ur' : 'urami'; - } - return result; - case 'd': - return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; - case 'dd': - if (number === 1) { - result += withoutSuffix || isFuture ? 'dan' : 'dnem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; - } else { - result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; - } - return result; - case 'M': - return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; - case 'MM': - if (number === 1) { - result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; - } else { - result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; - } - return result; - case 'y': - return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; - case 'yy': - if (number === 1) { - result += withoutSuffix || isFuture ? 'leto' : 'letom'; - } else if (number === 2) { - result += withoutSuffix || isFuture ? 'leti' : 'letoma'; - } else if (number < 5) { - result += withoutSuffix || isFuture ? 'leta' : 'leti'; - } else { - result += withoutSuffix || isFuture ? 'let' : 'leti'; - } - return result; - } - } - - hooks.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : processRelativeTime$6, - ss : processRelativeTime$6, - m : processRelativeTime$6, - mm : processRelativeTime$6, - h : processRelativeTime$6, - hh : processRelativeTime$6, - d : processRelativeTime$6, - dd : processRelativeTime$6, - M : processRelativeTime$6, - MM : processRelativeTime$6, - y : processRelativeTime$6, - yy : processRelativeTime$6 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact : true, - meridiemParse: /PD|MD/, - isPM: function (input) { - return input.charAt(0) === 'M'; - }, - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - ss : '%d sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var translator$1 = { - words: { //Different grammatical cases - ss: ['секунда', 'секунде', 'секунди'], - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator$1.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey); - } - } - }; - - hooks.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), - monthsParseExact: true, - weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), - weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), - weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - ss : translator$1.translate, - m : translator$1.translate, - mm : translator$1.translate, - h : translator$1.translate, - hh : translator$1.translate, - d : 'дан', - dd : translator$1.translate, - M : 'месец', - MM : translator$1.translate, - y : 'годину', - yy : translator$1.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var translator$2 = { - words: { //Different grammatical cases - ss: ['sekunda', 'sekunde', 'sekundi'], - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator$2.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey); - } - } - }; - - hooks.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), - weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), - weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat: { - LT: 'H:mm', - LTS : 'H:mm:ss', - L: 'DD.MM.YYYY', - LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - ss : translator$2.translate, - m : translator$2.translate, - mm : translator$2.translate, - h : translator$2.translate, - hh : translator$2.translate, - d : 'dan', - dd : translator$2.translate, - M : 'mesec', - MM : translator$2.translate, - y : 'godinu', - yy : translator$2.translate - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('ss', { - months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), - monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), - weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Namuhla nga] LT', - nextDay : '[Kusasa nga] LT', - nextWeek : 'dddd [nga] LT', - lastDay : '[Itolo nga] LT', - lastWeek : 'dddd [leliphelile] [nga] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'nga %s', - past : 'wenteka nga %s', - s : 'emizuzwana lomcane', - ss : '%d mzuzwana', - m : 'umzuzu', - mm : '%d emizuzu', - h : 'lihora', - hh : '%d emahora', - d : 'lilanga', - dd : '%d emalanga', - M : 'inyanga', - MM : '%d tinyanga', - y : 'umnyaka', - yy : '%d iminyaka' - }, - meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'ekuseni'; - } else if (hours < 15) { - return 'emini'; - } else if (hours < 19) { - return 'entsambama'; - } else { - return 'ebusuku'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'ekuseni') { - return hour; - } else if (meridiem === 'emini') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { - if (hour === 0) { - return 0; - } - return hour + 12; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : '%d', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: '[På] dddd LT', - lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - ss : '%d sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('sw', { - months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), - weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[leo saa] LT', - nextDay : '[kesho saa] LT', - nextWeek : '[wiki ijayo] dddd [saat] LT', - lastDay : '[jana] LT', - lastWeek : '[wiki iliyopita] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s baadaye', - past : 'tokea %s', - s : 'hivi punde', - ss : 'sekunde %d', - m : 'dakika moja', - mm : 'dakika %d', - h : 'saa limoja', - hh : 'masaa %d', - d : 'siku moja', - dd : 'masiku %d', - M : 'mwezi mmoja', - MM : 'miezi %d', - y : 'mwaka mmoja', - yy : 'miaka %d' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var symbolMap$14 = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' - }, numberMap$13 = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' - }; - - hooks.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, HH:mm', - LLLL : 'dddd, D MMMM YYYY, HH:mm' - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s இல்', - past : '%s முன்', - s : 'ஒரு சில விநாடிகள்', - ss : '%d விநாடிகள்', - m : 'ஒரு நிமிடம்', - mm : '%d நிமிடங்கள்', - h : 'ஒரு மணி நேரம்', - hh : '%d மணி நேரம்', - d : 'ஒரு நாள்', - dd : '%d நாட்கள்', - M : 'ஒரு மாதம்', - MM : '%d மாதங்கள்', - y : 'ஒரு வருடம்', - yy : '%d ஆண்டுகள்' - }, - dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; - }, - preparse: function (string) { - return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap$13[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$14[match]; - }); - }, - // refer http://ta.wikipedia.org/s/1er1 - meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { - if (hour < 2) { - return ' யாமம்'; - } else if (hour < 6) { - return ' வைகறை'; // வைகறை - } else if (hour < 10) { - return ' காலை'; // காலை - } else if (hour < 14) { - return ' நண்பகல்'; // நண்பகல் - } else if (hour < 18) { - return ' எற்பாடு'; // எற்பாடு - } else if (hour < 22) { - return ' மாலை'; // மாலை - } else { - return ' யாமம்'; - } - }, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'யாமம்') { - return hour < 2 ? hour : hour + 12; - } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { - return hour; - } else if (meridiem === 'நண்பகல்') { - return hour >= 10 ? hour : hour + 12; - } else { - return hour + 12; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('te', { - months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), - monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), - monthsParseExact : true, - weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), - weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, A h:mm', - LLLL : 'dddd, D MMMM YYYY, A h:mm' - }, - calendar : { - sameDay : '[నేడు] LT', - nextDay : '[రేపు] LT', - nextWeek : 'dddd, LT', - lastDay : '[నిన్న] LT', - lastWeek : '[గత] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s లో', - past : '%s క్రితం', - s : 'కొన్ని క్షణాలు', - ss : '%d సెకన్లు', - m : 'ఒక నిమిషం', - mm : '%d నిమిషాలు', - h : 'ఒక గంట', - hh : '%d గంటలు', - d : 'ఒక రోజు', - dd : '%d రోజులు', - M : 'ఒక నెల', - MM : '%d నెలలు', - y : 'ఒక సంవత్సరం', - yy : '%d సంవత్సరాలు' - }, - dayOfMonthOrdinalParse : /\d{1,2}వ/, - ordinal : '%dవ', - meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'రాత్రి') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'ఉదయం') { - return hour; - } else if (meridiem === 'మధ్యాహ్నం') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'సాయంత్రం') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'రాత్రి'; - } else if (hour < 10) { - return 'ఉదయం'; - } else if (hour < 17) { - return 'మధ్యాహ్నం'; - } else if (hour < 20) { - return 'సాయంత్రం'; - } else { - return 'రాత్రి'; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('tet', { - months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Ohin iha] LT', - nextDay: '[Aban iha] LT', - nextWeek: 'dddd [iha] LT', - lastDay: '[Horiseik iha] LT', - lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'iha %s', - past : '%s liuba', - s : 'minutu balun', - ss : 'minutu %d', - m : 'minutu ida', - mm : 'minutu %d', - h : 'oras ida', - hh : 'oras %d', - d : 'loron ida', - dd : 'loron %d', - M : 'fulan ida', - MM : 'fulan %d', - y : 'tinan ida', - yy : 'tinan %d' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var suffixes$3 = { - 0: '-ум', - 1: '-ум', - 2: '-юм', - 3: '-юм', - 4: '-ум', - 5: '-ум', - 6: '-ум', - 7: '-ум', - 8: '-ум', - 9: '-ум', - 10: '-ум', - 12: '-ум', - 13: '-ум', - 20: '-ум', - 30: '-юм', - 40: '-ум', - 50: '-ум', - 60: '-ум', - 70: '-ум', - 80: '-ум', - 90: '-ум', - 100: '-ум' - }; - - hooks.defineLocale('tg', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'), - weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Имрӯз соати] LT', - nextDay : '[Пагоҳ соати] LT', - lastDay : '[Дирӯз соати] LT', - nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'баъди %s', - past : '%s пеш', - s : 'якчанд сония', - m : 'як дақиқа', - mm : '%d дақиқа', - h : 'як соат', - hh : '%d соат', - d : 'як рӯз', - dd : '%d рӯз', - M : 'як моҳ', - MM : '%d моҳ', - y : 'як сол', - yy : '%d сол' - }, - meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === 'шаб') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'субҳ') { - return hour; - } else if (meridiem === 'рӯз') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === 'бегоҳ') { - return hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'шаб'; - } else if (hour < 11) { - return 'субҳ'; - } else if (hour < 16) { - return 'рӯз'; - } else if (hour < 19) { - return 'бегоҳ'; - } else { - return 'шаб'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, - ordinal: function (number) { - var a = number % 10, - b = number >= 100 ? 100 : null; - return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), - monthsParseExact: true, - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H:mm', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' - }, - meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, - isPM: function (input) { - return input === 'หลังเที่ยง'; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'ก่อนเที่ยง'; - } else { - return 'หลังเที่ยง'; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - ss : '%d วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { - sameDay: 'LT [ngayong araw]', - nextDay: '[Bukas ng] LT', - nextWeek: 'LT [sa susunod na] dddd', - lastDay: 'LT [kahapon]', - lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - ss : '%d segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); - - function translateFuture(output) { - var time = output; - time = (output.indexOf('jaj') !== -1) ? - time.slice(0, -3) + 'leS' : - (output.indexOf('jar') !== -1) ? - time.slice(0, -3) + 'waQ' : - (output.indexOf('DIS') !== -1) ? - time.slice(0, -3) + 'nem' : - time + ' pIq'; - return time; - } - - function translatePast(output) { - var time = output; - time = (output.indexOf('jaj') !== -1) ? - time.slice(0, -3) + 'Hu’' : - (output.indexOf('jar') !== -1) ? - time.slice(0, -3) + 'wen' : - (output.indexOf('DIS') !== -1) ? - time.slice(0, -3) + 'ben' : - time + ' ret'; - return time; - } - - function translate$10(number, withoutSuffix, string, isFuture) { - var numberNoun = numberAsNoun(number); - switch (string) { - case 'ss': - return numberNoun + ' lup'; - case 'mm': - return numberNoun + ' tup'; - case 'hh': - return numberNoun + ' rep'; - case 'dd': - return numberNoun + ' jaj'; - case 'MM': - return numberNoun + ' jar'; - case 'yy': - return numberNoun + ' DIS'; - } - } - - function numberAsNoun(number) { - var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; - if (hundred > 0) { - word += numbersNouns[hundred] + 'vatlh'; - } - if (ten > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; - } - if (one > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[one]; - } - return (word === '') ? 'pagh' : word; - } - - hooks.defineLocale('tlh', { - months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), - monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), - monthsParseExact : true, - weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[DaHjaj] LT', - nextDay: '[wa’leS] LT', - nextWeek: 'LLL', - lastDay: '[wa’Hu’] LT', - lastWeek: 'LLL', - sameElse: 'L' - }, - relativeTime : { - future : translateFuture, - past : translatePast, - s : 'puS lup', - ss : translate$10, - m : 'wa’ tup', - mm : translate$10, - h : 'wa’ rep', - hh : translate$10, - d : 'wa’ jaj', - dd : translate$10, - M : 'wa’ jar', - MM : translate$10, - y : 'wa’ DIS', - yy : translate$10 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - var suffixes$4 = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' - }; - - hooks.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[gelecek] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - ss : '%d saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' - }, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'Do': - case 'DD': - return number; - default: - if (number === 0) { // special case for zero - return number + '\'ıncı'; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]); - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. - // This is currently too difficult (maybe even impossible) to add. - hooks.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY HH.mm', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' - }, - meridiemParse: /d\'o|d\'a/i, - isPM : function (input) { - return 'd\'o' === input.toLowerCase(); - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; - } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : processRelativeTime$7, - ss : processRelativeTime$7, - m : processRelativeTime$7, - mm : processRelativeTime$7, - h : processRelativeTime$7, - hh : processRelativeTime$7, - d : processRelativeTime$7, - dd : processRelativeTime$7, - M : processRelativeTime$7, - MM : processRelativeTime$7, - y : processRelativeTime$7, - yy : processRelativeTime$7 - }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - function processRelativeTime$7(number, withoutSuffix, key, isFuture) { - var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'ss': [number + ' secunds', '' + number + ' secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', '' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', '' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', '' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', '' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', '' + number + ' ars'] - }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); - } - - //! moment.js locale configuration - - hooks.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[asdkh g] LT', - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - ss : '%d imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS: 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - ss : '%d ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js language configuration - - hooks.defineLocale('ug-cn', { - months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( - '_' - ), - weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( - '_' - ), - weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), - longDateFormat: { - LT: 'HH:mm', - LTS: 'HH:mm:ss', - L: 'YYYY-MM-DD', - LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', - LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm' - }, - meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if ( - meridiem === 'يېرىم كېچە' || - meridiem === 'سەھەر' || - meridiem === 'چۈشتىن بۇرۇن' - ) { - return hour; - } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { - return hour + 12; - } else { - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem: function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return 'يېرىم كېچە'; - } else if (hm < 900) { - return 'سەھەر'; - } else if (hm < 1130) { - return 'چۈشتىن بۇرۇن'; - } else if (hm < 1230) { - return 'چۈش'; - } else if (hm < 1800) { - return 'چۈشتىن كېيىن'; - } else { - return 'كەچ'; - } - }, - calendar: { - sameDay: '[بۈگۈن سائەت] LT', - nextDay: '[ئەتە سائەت] LT', - nextWeek: '[كېلەركى] dddd [سائەت] LT', - lastDay: '[تۆنۈگۈن] LT', - lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L' - }, - relativeTime: { - future: '%s كېيىن', - past: '%s بۇرۇن', - s: 'نەچچە سېكونت', - ss: '%d سېكونت', - m: 'بىر مىنۇت', - mm: '%d مىنۇت', - h: 'بىر سائەت', - hh: '%d سائەت', - d: 'بىر كۈن', - dd: '%d كۈن', - M: 'بىر ئاي', - MM: '%d ئاي', - y: 'بىر يىل', - yy: '%d يىل' - }, - - dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, - ordinal: function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '-كۈنى'; - case 'w': - case 'W': - return number + '-ھەپتە'; - default: - return number; - } - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week: { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow: 1, // Monday is the first day of the week. - doy: 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - function plural$6(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - function relativeTimeWithPlural$4(number, withoutSuffix, key) { - var format = { - 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural$6(format[key], +number); - } - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }; - - if (!m) { - return weekdays['nominative']; - } - - var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - return weekdays[nounCase][m.day()]; - } - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; - } - - hooks.defineLocale('uk', { - months : { - 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), - 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') - }, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., HH:mm', - LLLL : 'dddd, D MMMM YYYY р., HH:mm' - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - ss : relativeTimeWithPlural$4, - m : relativeTimeWithPlural$4, - mm : relativeTimeWithPlural$4, - h : 'годину', - hh : relativeTimeWithPlural$4, - d : 'день', - dd : relativeTimeWithPlural$4, - M : 'місяць', - MM : relativeTimeWithPlural$4, - y : 'рік', - yy : relativeTimeWithPlural$4 - }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiemParse: /ночі|ранку|дня|вечора/, - isPM: function (input) { - return /^(дня|вечора)$/.test(input); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return 'ночі'; - } else if (hour < 12) { - return 'ранку'; - } else if (hour < 17) { - return 'дня'; - } else { - return 'вечора'; - } - }, - dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - var months$8 = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' - ]; - var days$2 = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' - ]; - - hooks.defineLocale('ur', { - months : months$8, - monthsShort : months$8, - weekdays : days$2, - weekdaysShort : days$2, - weekdaysMin : days$2, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd، D MMMM YYYY HH:mm' - }, - meridiemParse: /صبح|شام/, - isPM : function (input) { - return 'شام' === input; - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return 'صبح'; - } - return 'شام'; - }, - calendar : { - sameDay : '[آج بوقت] LT', - nextDay : '[کل بوقت] LT', - nextWeek : 'dddd [بوقت] LT', - lastDay : '[گذشتہ روز بوقت] LT', - lastWeek : '[گذشتہ] dddd [بوقت] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s بعد', - past : '%s قبل', - s : 'چند سیکنڈ', - ss : '%d سیکنڈ', - m : 'ایک منٹ', - mm : '%d منٹ', - h : 'ایک گھنٹہ', - hh : '%d گھنٹے', - d : 'ایک دن', - dd : '%d دن', - M : 'ایک ماہ', - MM : '%d ماہ', - y : 'ایک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/,/g, '،'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('uz-latn', { - months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), - monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), - weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Bugun soat] LT [da]', - nextDay : '[Ertaga] LT [da]', - nextWeek : 'dddd [kuni soat] LT [da]', - lastDay : '[Kecha soat] LT [da]', - lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', - sameElse : 'L' - }, - relativeTime : { - future : 'Yaqin %s ichida', - past : 'Bir necha %s oldin', - s : 'soniya', - ss : '%d soniya', - m : 'bir daqiqa', - mm : '%d daqiqa', - h : 'bir soat', - hh : '%d soat', - d : 'bir kun', - dd : '%d kun', - M : 'bir oy', - MM : '%d oy', - y : 'bir yil', - yy : '%d yil' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('uz', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : 'Якин %s ичида', - past : 'Бир неча %s олдин', - s : 'фурсат', - ss : '%d фурсат', - m : 'бир дакика', - mm : '%d дакика', - h : 'бир соат', - hh : '%d соат', - d : 'бир кун', - dd : '%d кун', - M : 'бир ой', - MM : '%d ой', - y : 'бир йил', - yy : '%d йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - monthsParseExact : true, - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact : true, - meridiemParse: /sa|ch/i, - isPM : function (input) { - return /^ch$/i.test(input); - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower ? 'sa' : 'SA'; - } else { - return isLower ? 'ch' : 'CH'; - } - }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - calendar : { - sameDay: '[Hôm nay lúc] LT', - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - ss : '%d giây' , - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' - }, - dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('x-pseudo', { - months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), - monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), - monthsParseExact : true, - weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), - weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[T~ódá~ý át] LT', - nextDay : '[T~ómó~rró~w át] LT', - nextWeek : 'dddd [át] LT', - lastDay : '[Ý~ést~érdá~ý át] LT', - lastWeek : '[L~ást] dddd [át] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'í~ñ %s', - past : '%s á~gó', - s : 'á ~féw ~sécó~ñds', - ss : '%d s~écóñ~ds', - m : 'á ~míñ~úté', - mm : '%d m~íñú~tés', - h : 'á~ñ hó~úr', - hh : '%d h~óúrs', - d : 'á ~dáý', - dd : '%d d~áýs', - M : 'á ~móñ~th', - MM : '%d m~óñt~hs', - y : 'á ~ýéár', - yy : '%d ý~éárs' - }, - dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('yo', { - months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), - monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Ònì ni] LT', - nextDay : '[Ọ̀la ni] LT', - nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - lastDay : '[Àna ni] LT', - lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ní %s', - past : '%s kọjá', - s : 'ìsẹjú aayá die', - ss :'aayá %d', - m : 'ìsẹjú kan', - mm : 'ìsẹjú %d', - h : 'wákati kan', - hh : 'wákati %d', - d : 'ọjọ́ kan', - dd : 'ọjọ́ %d', - M : 'osù kan', - MM : 'osù %d', - y : 'ọdún kan', - yy : 'ọdún %d' - }, - dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, - ordinal : 'ọjọ́ %d', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah点mm分', - LLLL : 'YYYY年M月D日ddddAh点mm分', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour: function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { - return hour; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } else { - // '中午' - return hour >= 11 ? hour : hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { - switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; - } - }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - ss : '%d 秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('zh-hk', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' - }, - meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { - if (hour === 12) { - hour = 0; - } - if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { - return hour; - } else if (meridiem === '中午') { - return hour >= 11 ? hour : hour + 12; - } else if (meridiem === '下午' || meridiem === '晚上') { - return hour + 12; - } - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return '凌晨'; - } else if (hm < 900) { - return '早上'; - } else if (hm < 1130) { - return '上午'; - } else if (hm < 1230) { - return '中午'; - } else if (hm < 1800) { - return '下午'; - } else { - return '晚上'; - } - }, - calendar : { - sameDay : '[今天] LT', - nextDay : '[明天] LT', - nextWeek : '[下]dddd LT', - lastDay : '[昨天] LT', - lastWeek : '[上]dddd LT', - sameElse : 'L' - }, - dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { - switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; - } - }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } - }); - - hooks.locale('en'); - - return hooks; - -}))); +/** + * Minified by jsDelivr using Terser v5.3.0. + * Original file: /npm/moment@2.29.1/moment.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +//! moment.js +//! version : 2.29.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,(function(){"use strict";var e,t;function n(){return e.apply(null,arguments)}function s(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(r(e,t))return!1;return!0}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function l(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function h(e,t){var n,s=[];for(n=0;n>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},W={};function C(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(W[e]=i),t&&(W[t[0]]=function(){return T(i.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function H(e,t){return e.isValid()?(t=U(t,e.localeData()),R[t]=R[t]||function(e){var t,n,s,i=e.match(N);for(t=0,n=i.length;t=0&&P.test(e);)e=e.replace(P,s),P.lastIndex=0,n-=1;return e}var F={};function L(e,t){var n=e.toLowerCase();F[n]=F[n+"s"]=F[t]=e}function V(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function G(e){var t,n,s={};for(n in e)r(e,n)&&(t=V(n))&&(s[t]=e[n]);return s}var E={};function A(e,t){E[e]=t}function j(e){return e%4==0&&e%100!=0||e%400==0}function I(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Z(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=I(t)),n}function z(e,t){return function(s){return null!=s?(q(this,e,s),n.updateOffset(this,t),this):$(this,e)}}function $(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function q(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&j(e.year())&&1===e.month()&&29===e.date()?(n=Z(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),ve(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var B,J=/\d/,Q=/\d\d/,X=/\d{3}/,K=/\d{4}/,ee=/[+-]?\d{6}/,te=/\d\d?/,ne=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,re=/\d{1,4}/,ae=/[+-]?\d{1,6}/,oe=/\d+/,ue=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,he=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ce(e,t,n){B[e]=O(t)?t:function(e,s){return e&&n?n:t}}function fe(e,t){return r(B,e)?B[e](t._strict,t._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,s,i){return t||n||s||i}))))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}B={};var _e={};function ye(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),u(t)&&(s=function(e,n){n[t]=Z(e)}),n=0;n68?1900:2e3)};var Pe=z("FullYear",!0);function Re(e,t,n,s,i,r,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function We(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ce(e,t,n){var s=7+t-n;return-((7+We(e,0,s).getUTCDay()-t)%7)+s-1}function He(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ce(e,s,i);return o<=0?a=Ne(r=e-1)+o:o>Ne(e)?(r=e+1,a=o-Ne(e)):(r=e,a=o),{year:r,dayOfYear:a}}function Ue(e,t,n){var s,i,r=Ce(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Fe(i=e.year()-1,t,n):a>Fe(e.year(),t,n)?(s=a-Fe(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Fe(e,t,n){var s=Ce(e,t,n),i=Ce(e+1,t,n);return(Ne(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],(function(e,t,n,s){t[s.substr(0,1)]=Z(e)}));function Le(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),C("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),C("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",(function(e,t){return t.weekdaysMinRegex(e)})),ce("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),ce("dddd",(function(e,t){return t.weekdaysRegex(e)})),ge(["dd","ddd","dddd"],(function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:f(n).invalidWeekday=e})),ge(["d","e","E"],(function(e,t,n,s){t[s]=Z(e)}));var Ve="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ge="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ee="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ae=de,je=de,Ie=de;function Ze(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=pe.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=pe.call(this._weekdaysParse,a))||-1!==(i=pe.call(this._shortWeekdaysParse,a))||-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=pe.call(this._shortWeekdaysParse,a))||-1!==(i=pe.call(this._weekdaysParse,a))||-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:-1!==(i=pe.call(this._minWeekdaysParse,a))||-1!==(i=pe.call(this._weekdaysParse,a))||-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:null}function ze(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=c([2e3,1]).day(t),s=me(this.weekdaysMin(n,"")),i=me(this.weekdaysShort(n,"")),r=me(this.weekdays(n,"")),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);a.sort(e),o.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function $e(){return this.hours()%12||12}function qe(e,t){C(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Be(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,$e),C("k",["kk",2],0,(function(){return this.hours()||24})),C("hmm",0,0,(function(){return""+$e.apply(this)+T(this.minutes(),2)})),C("hmmss",0,0,(function(){return""+$e.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)})),C("Hmm",0,0,(function(){return""+this.hours()+T(this.minutes(),2)})),C("Hmmss",0,0,(function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)})),qe("a",!0),qe("A",!1),L("hour","h"),A("hour",13),ce("a",Be),ce("A",Be),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],3),ye(["k","kk"],(function(e,t,n){var s=Z(e);t[3]=24===s?0:s})),ye(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),ye(["h","hh"],(function(e,t,n){t[3]=Z(e),f(n).bigHour=!0})),ye("hmm",(function(e,t,n){var s=e.length-2;t[3]=Z(e.substr(0,s)),t[4]=Z(e.substr(s)),f(n).bigHour=!0})),ye("hmmss",(function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=Z(e.substr(0,s)),t[4]=Z(e.substr(s,2)),t[5]=Z(e.substr(i)),f(n).bigHour=!0})),ye("Hmm",(function(e,t,n){var s=e.length-2;t[3]=Z(e.substr(0,s)),t[4]=Z(e.substr(s))})),ye("Hmmss",(function(e,t,n){var s=e.length-4,i=e.length-2;t[3]=Z(e.substr(0,s)),t[4]=Z(e.substr(s,2)),t[5]=Z(e.substr(i))}));var Je=z("Hours",!0);var Qe,Xe={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:ke,monthsShort:Me,week:{dow:0,doy:6},weekdays:Ve,weekdaysMin:Ee,weekdaysShort:Ge,meridiemParse:/[ap]\.?m?\.?/i},Ke={},et={};function tt(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n0;){if(s=st(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&tt(i,n)>=t-1)break;t--}r++}return Qe}(e)}function ot(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[1]<0||n[1]>11?1:n[2]<1||n[2]>ve(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,f(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),f(e)._overflowWeeks&&-1===t&&(t=7),f(e)._overflowWeekday&&-1===t&&(t=8),f(e).overflow=t),e}var ut=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ht=/Z|[+-]\d\d(?::?\d\d)?/,dt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ct=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ft=/^\/?Date\((-?\d+)/i,mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,_t={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function yt(e){var t,n,s,i,r,a,o=e._i,u=ut.exec(o)||lt.exec(o);if(u){for(f(e).iso=!0,t=0,n=dt.length;t7)&&(u=!0)):(r=e._locale._week.dow,a=e._locale._week.doy,l=Ue(St(),r,a),n=pt(t.gg,e._a[0],l.year),s=pt(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r);s<1||s>Fe(n,r,a)?f(e)._overflowWeeks=!0:null!=u?f(e)._overflowWeekday=!0:(o=He(n,s,i,r,a),e._a[0]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(a=pt(e._a[0],i[0]),(e._dayOfYear>Ne(a)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),s=We(a,0,e._dayOfYear),e._a[1]=s.getUTCMonth(),e._a[2]=s.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=i[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?We:Re).apply(null,o),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(f(e).weekdayMismatch=!0)}}function kt(e){if(e._f!==n.ISO_8601)if(e._f!==n.RFC_2822){e._a=[],f(e).empty=!0;var t,s,i,r,a,o,u=""+e._i,l=u.length,h=0;for(i=U(e._f,e._locale).match(N)||[],t=0;t0&&f(e).unusedInput.push(a),u=u.slice(u.indexOf(s)+s.length),h+=s.length),W[r]?(s?f(e).empty=!1:f(e).unusedTokens.push(r),we(r,s,e)):e._strict&&!s&&f(e).unusedTokens.push(r);f(e).charsLeftOver=l-h,u.length>0&&f(e).unusedInput.push(u),e._a[3]<=12&&!0===f(e).bigHour&&e._a[3]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[3]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),null!==(o=f(e).era)&&(e._a[0]=e._locale.erasConvertYear(o,e._a[0])),vt(e),ot(e)}else wt(e);else yt(e)}function Mt(e){var t=e._i,r=e._f;return e._locale=e._locale||at(e._l),null===t||void 0===r&&""===t?_({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),v(t)?new p(ot(t)):(l(t)?e._d=t:s(r)?function(e){var t,n,s,i,r,a,o=!1;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis?this:e:_()}));function bt(e,t){var n,i;if(1===t.length&&s(t[0])&&(t=t[0]),!t.length)return St();for(n=t[0],i=1;i=0?new Date(e+400,t,n)-sn:new Date(e,t,n).valueOf()}function on(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-sn:Date.UTC(e,t,n)}function un(e,t){return t.erasAbbrRegex(e)}function ln(){var e,t,n=[],s=[],i=[],r=[],a=this.eras();for(e=0,t=a.length;e(r=Fe(e,s,i))&&(t=r),cn.call(this,e,t,n,s,i))}function cn(e,t,n,s,i){var r=He(e,t,n,s,i),a=We(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),ce("N",un),ce("NN",un),ce("NNN",un),ce("NNNN",(function(e,t){return t.erasNameRegex(e)})),ce("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),ye(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,s){var i=n._locale.erasParse(e,s,n._strict);i?f(n).era=i:f(n).invalidEra=e})),ce("y",oe),ce("yy",oe),ce("yyy",oe),ce("yyyy",oe),ce("yo",(function(e,t){return t._eraYearOrdinalRegex||oe})),ye(["y","yy","yyy","yyyy"],0),ye(["yo"],(function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[0]=n._locale.eraYearOrdinalParse(e,i):t[0]=parseInt(e,10)})),C(0,["gg",2],0,(function(){return this.weekYear()%100})),C(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),hn("gggg","weekYear"),hn("ggggg","weekYear"),hn("GGGG","isoWeekYear"),hn("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ce("G",ue),ce("g",ue),ce("GG",te,Q),ce("gg",te,Q),ce("GGGG",re,K),ce("gggg",re,K),ce("GGGGG",ae,ee),ce("ggggg",ae,ee),ge(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,s){t[s.substr(0,2)]=Z(e)})),ge(["gg","GG"],(function(e,t,s,i){t[i]=n.parseTwoDigitYear(e)})),C("Q",0,"Qo","quarter"),L("quarter","Q"),A("quarter",7),ce("Q",J),ye("Q",(function(e,t){t[1]=3*(Z(e)-1)})),C("D",["DD",2],"Do","date"),L("date","D"),A("date",9),ce("D",te),ce("DD",te,Q),ce("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),ye(["D","DD"],2),ye("Do",(function(e,t){t[2]=Z(e.match(te)[0])}));var fn=z("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),A("dayOfYear",4),ce("DDD",ie),ce("DDDD",X),ye(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=Z(e)})),C("m",["mm",2],0,"minute"),L("minute","m"),A("minute",14),ce("m",te),ce("mm",te,Q),ye(["m","mm"],4);var mn=z("Minutes",!1);C("s",["ss",2],0,"second"),L("second","s"),A("second",15),ce("s",te),ce("ss",te,Q),ye(["s","ss"],5);var _n,yn,gn=z("Seconds",!1);for(C("S",0,0,(function(){return~~(this.millisecond()/100)})),C(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),C(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),C(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),C(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),C(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),C(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),L("millisecond","ms"),A("millisecond",16),ce("S",ie,J),ce("SS",ie,Q),ce("SSS",ie,X),_n="SSSS";_n.length<=9;_n+="S")ce(_n,oe);function wn(e,t){t[6]=Z(1e3*("0."+e))}for(_n="S";_n.length<=9;_n+="S")ye(_n,wn);yn=z("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var pn=p.prototype;function vn(e){return e}pn.add=Zt,pn.calendar=function(e,t){1===arguments.length&&(arguments[0]?qt(arguments[0])?(e=arguments[0],t=void 0):Bt(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var s=e||St(),i=Ht(s,this).startOf("day"),r=n.calendarFormat(this,i)||"sameElse",a=t&&(O(t[r])?t[r].call(this,s):t[r]);return this.format(a||this.localeData().calendar(r,this,St(s)))},pn.clone=function(){return new p(this)},pn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Ht(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=V(t)){case"year":r=Jt(this,s)/12;break;case"month":r=Jt(this,s);break;case"quarter":r=Jt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:I(r)},pn.endOf=function(e){var t,s;if(void 0===(e=V(e))||"millisecond"===e||!this.isValid())return this;switch(s=this._isUTC?on:an,e){case"year":t=s(this.year()+1,0,1)-1;break;case"quarter":t=s(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=s(this.year(),this.month()+1,1)-1;break;case"week":t=s(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=s(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=s(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=nn-rn(t+(this._isUTC?0:this.utcOffset()*tn),nn)-1;break;case"minute":t=this._d.valueOf(),t+=tn-rn(t,tn)-1;break;case"second":t=this._d.valueOf(),t+=en-rn(t,en)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},pn.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=H(this,e);return this.localeData().postformat(t)},pn.from=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||St(e).isValid())?Gt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pn.fromNow=function(e){return this.from(St(),e)},pn.to=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||St(e).isValid())?Gt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pn.toNow=function(e){return this.to(St(),e)},pn.get=function(e){return O(this[e=V(e)])?this[e]():this},pn.invalidAt=function(){return f(this).overflow},pn.isAfter=function(e,t){var n=v(e)?e:St(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()9999?H(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",H(n,"Z")):H(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,s="moment",i="";return this.isLocal()||(s=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+s+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY","-MM-DD[T]HH:mm:ss.SSS",n=i+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(pn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),pn.toJSON=function(){return this.isValid()?this.toISOString():null},pn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pn.unix=function(){return Math.floor(this.valueOf()/1e3)},pn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pn.eraName=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pn.isLocal=function(){return!!this.isValid()&&!this._isUTC},pn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pn.isUtc=Ft,pn.isUTC=Ft,pn.zoneAbbr=function(){return this._isUTC?"UTC":""},pn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pn.dates=M("dates accessor is deprecated. Use date instead.",fn),pn.months=M("months accessor is deprecated. Use month instead",xe),pn.years=M("years accessor is deprecated. Use year instead",Pe),pn.zone=M("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),pn.isDSTShifted=M("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return w(t,this),(t=Mt(t))._a?(e=t._isUTC?c(t._a):St(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s0):this._isDSTShifted=!1,this._isDSTShifted}));var kn=x.prototype;function Mn(e,t,n,s){var i=at(),r=c().set(s,t);return i[n](r,e)}function Dn(e,t,n){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return Mn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=Mn(e,s,n,"month");return i}function Sn(e,t,n,s){"boolean"==typeof e?(u(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,u(t)&&(n=t,t=void 0),t=t||"");var i,r=at(),a=e?r._week.dow:0,o=[];if(null!=n)return Mn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=Mn(t,(i+a)%7,s,"day");return o}kn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return O(s)?s.call(t,n):s},kn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(N).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},kn.invalidDate=function(){return this._invalidDate},kn.ordinal=function(e){return this._ordinal.replace("%d",e)},kn.preparse=vn,kn.postformat=vn,kn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return O(i)?i(e,t,n,s):i.replace(/%d/i,e)},kn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},kn.set=function(e){var t,n;for(n in e)r(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},kn.eras=function(e,t){var s,i,r,a=this._eras||at("en")._eras;for(s=0,i=a.length;s=0)return u[s]},kn.erasConvertYear=function(e,t){var s=e.since<=e.until?1:-1;return void 0===t?n(e.since).year():n(e.since).year()+(t-e.offset)*s},kn.erasAbbrRegex=function(e){return r(this,"_erasAbbrRegex")||ln.call(this),e?this._erasAbbrRegex:this._erasRegex},kn.erasNameRegex=function(e){return r(this,"_erasNameRegex")||ln.call(this),e?this._erasNameRegex:this._erasRegex},kn.erasNarrowRegex=function(e){return r(this,"_erasNarrowRegex")||ln.call(this),e?this._erasNarrowRegex:this._erasRegex},kn.months=function(e,t){return e?s(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||De).test(t)?"format":"standalone"][e.month()]:s(this._months)?this._months:this._months.standalone},kn.monthsShort=function(e,t){return e?s(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[De.test(t)?"format":"standalone"][e.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},kn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return Oe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=c([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},kn.monthsRegex=function(e){return this._monthsParseExact?(r(this,"_monthsRegex")||Te.call(this),e?this._monthsStrictRegex:this._monthsRegex):(r(this,"_monthsRegex")||(this._monthsRegex=Ye),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},kn.monthsShortRegex=function(e){return this._monthsParseExact?(r(this,"_monthsRegex")||Te.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(r(this,"_monthsShortRegex")||(this._monthsShortRegex=Se),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},kn.week=function(e){return Ue(e,this._week.dow,this._week.doy).week},kn.firstDayOfYear=function(){return this._week.doy},kn.firstDayOfWeek=function(){return this._week.dow},kn.weekdays=function(e,t){var n=s(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Le(n,this._week.dow):e?n[e.day()]:n},kn.weekdaysMin=function(e){return!0===e?Le(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},kn.weekdaysShort=function(e){return!0===e?Le(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},kn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return Ze.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=c([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},kn.weekdaysRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||ze.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(r(this,"_weekdaysRegex")||(this._weekdaysRegex=Ae),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},kn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||ze.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(r(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},kn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||ze.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(r(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ie),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},kn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},kn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},it("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Z(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),n.lang=M("moment.lang is deprecated. Use moment.locale instead.",it),n.langData=M("moment.langData is deprecated. Use moment.localeData instead.",at);var Yn=Math.abs;function On(e,t,n,s){var i=Gt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function bn(e){return e<0?Math.floor(e):Math.ceil(e)}function xn(e){return 4800*e/146097}function Tn(e){return 146097*e/4800}function Nn(e){return function(){return this.as(e)}}var Pn=Nn("ms"),Rn=Nn("s"),Wn=Nn("m"),Cn=Nn("h"),Hn=Nn("d"),Un=Nn("w"),Fn=Nn("M"),Ln=Nn("Q"),Vn=Nn("y");function Gn(e){return function(){return this.isValid()?this._data[e]:NaN}}var En=Gn("milliseconds"),An=Gn("seconds"),jn=Gn("minutes"),In=Gn("hours"),Zn=Gn("days"),zn=Gn("months"),$n=Gn("years");var qn=Math.round,Bn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Jn(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}var Qn=Math.abs;function Xn(e){return(e>0)-(e<0)||+e}function Kn(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o,u=Qn(this._milliseconds)/1e3,l=Qn(this._days),h=Qn(this._months),d=this.asSeconds();return d?(e=I(u/60),t=I(e/60),u%=60,e%=60,n=I(h/12),h%=12,s=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",r=Xn(this._months)!==Xn(d)?"-":"",a=Xn(this._days)!==Xn(d)?"-":"",o=Xn(this._milliseconds)!==Xn(d)?"-":"",i+"P"+(n?r+n+"Y":"")+(h?r+h+"M":"")+(l?a+l+"D":"")+(t||e||u?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(u?o+s+"S":"")):"P0D"}var es=Tt.prototype;return es.isValid=function(){return this._isValid},es.abs=function(){var e=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),e.milliseconds=Yn(e.milliseconds),e.seconds=Yn(e.seconds),e.minutes=Yn(e.minutes),e.hours=Yn(e.hours),e.months=Yn(e.months),e.years=Yn(e.years),this},es.add=function(e,t){return On(this,e,t,1)},es.subtract=function(e,t){return On(this,e,t,-1)},es.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=V(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+xn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Tn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},es.asMilliseconds=Pn,es.asSeconds=Rn,es.asMinutes=Wn,es.asHours=Cn,es.asDays=Hn,es.asWeeks=Un,es.asMonths=Fn,es.asQuarters=Ln,es.asYears=Vn,es.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Z(this._months/12):NaN},es._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*bn(Tn(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=I(r/1e3),u.seconds=e%60,t=I(e/60),u.minutes=t%60,n=I(t/60),u.hours=n%24,a+=I(n/24),o+=i=I(xn(a)),a-=bn(Tn(i)),s=I(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},es.clone=function(){return Gt(this)},es.get=function(e){return e=V(e),this.isValid()?this[e+"s"]():NaN},es.milliseconds=En,es.seconds=An,es.minutes=jn,es.hours=In,es.days=Zn,es.weeks=function(){return I(this.days()/7)},es.months=zn,es.years=$n,es.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,s,i=!1,r=Bn;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(r=Object.assign({},Bn,t),null!=t.s&&null==t.ss&&(r.ss=t.s-1)),s=function(e,t,n,s){var i=Gt(e).abs(),r=qn(i.as("s")),a=qn(i.as("m")),o=qn(i.as("h")),u=qn(i.as("d")),l=qn(i.as("M")),h=qn(i.as("w")),d=qn(i.as("y")),c=r<=n.ss&&["s",r]||r0,c[4]=s,Jn.apply(null,c)}(this,!i,r,n=this.localeData()),i&&(s=n.pastFuture(+this,s)),n.postformat(s)},es.toISOString=Kn,es.toString=Kn,es.toJSON=Kn,es.locale=Qt,es.localeData=Kt,es.toIsoString=M("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Kn),es.lang=Xt,C("X",0,0,"unix"),C("x",0,0,"valueOf"),ce("x",ue),ce("X",/[+-]?\d+(\.\d{1,3})?/),ye("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),ye("x",(function(e,t,n){n._d=new Date(Z(e))})), +//! moment.js +n.version="2.29.1",e=St,n.fn=pn,n.min=function(){var e=[].slice.call(arguments,0);return bt("isBefore",e)},n.max=function(){var e=[].slice.call(arguments,0);return bt("isAfter",e)},n.now=function(){return Date.now?Date.now():+new Date},n.utc=c,n.unix=function(e){return St(1e3*e)},n.months=function(e,t){return Dn(e,t,"months")},n.isDate=l,n.locale=it,n.invalid=_,n.duration=Gt,n.isMoment=v,n.weekdays=function(e,t,n){return Sn(e,t,n,"weekdays")},n.parseZone=function(){return St.apply(null,arguments).parseZone()},n.localeData=at,n.isDuration=Nt,n.monthsShort=function(e,t){return Dn(e,t,"monthsShort")},n.weekdaysMin=function(e,t,n){return Sn(e,t,n,"weekdaysMin")},n.defineLocale=rt,n.updateLocale=function(e,t){if(null!=t){var n,s,i=Xe;null!=Ke[e]&&null!=Ke[e].parentLocale?Ke[e].set(b(Ke[e]._config,t)):(null!=(s=st(e))&&(i=s._config),t=b(i,t),null==s&&(t.abbr=e),(n=new x(t)).parentLocale=Ke[e],Ke[e]=n),it(e)}else null!=Ke[e]&&(null!=Ke[e].parentLocale?(Ke[e]=Ke[e].parentLocale,e===it()&&it(e)):null!=Ke[e]&&delete Ke[e]);return Ke[e]},n.locales=function(){return D(Ke)},n.weekdaysShort=function(e,t,n){return Sn(e,t,n,"weekdaysShort")},n.normalizeUnits=V,n.relativeTimeRounding=function(e){return void 0===e?qn:"function"==typeof e&&(qn=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==Bn[e]&&(void 0===t?Bn[e]:(Bn[e]=t,"s"===e&&(Bn.ss=t-1),!0))},n.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},n.prototype=pn,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n})); +//# sourceMappingURL=/sm/ac6ca6e51d8435fbb492538442f7060550b81bb0c2505d4048856d957213e3a8.map \ No newline at end of file diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 2908cda052..19373e930c 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -12,11 +12,18 @@ import common.models INVENTREE_SW_VERSION = "0.7.0 dev" # InvenTree API version -INVENTREE_API_VERSION = 28 +INVENTREE_API_VERSION = 30 """ Increment this API version number whenever there is a significant change to the API that any clients need to know about +v30 -> 2022-03-09 + - Adds "exclude_location" field to BuildAutoAllocation API endpoint + - Allows BuildItem API endpoint to be filtered by BomItem relation + +v29 -> 2022-03-08 + - Adds "scheduling" endpoint for predicted stock scheduling information + v28 -> 2022-03-04 - Adds an API endpoint for auto allocation of stock items against a build order - Ref: https://github.com/inventree/InvenTree/pull/2713 diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 114268fa2b..33f3f4ab36 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -461,6 +461,7 @@ class BuildItemList(generics.ListCreateAPIView): filter_fields = [ 'build', 'stock_item', + 'bom_item', 'install_into', ] diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index e4a5013b7b..9ba348b0b4 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -715,7 +715,7 @@ class Build(MPTTModel, ReferenceIndexingMixin): build=self, bom_item=bom_item, stock_item=stock_item, - quantity=quantity, + quantity=1, install_into=output, ) @@ -842,6 +842,7 @@ class Build(MPTTModel, ReferenceIndexingMixin): """ location = kwargs.get('location', None) + exclude_location = kwargs.get('exclude_location', None) interchangeable = kwargs.get('interchangeable', False) substitutes = kwargs.get('substitutes', True) @@ -875,6 +876,11 @@ class Build(MPTTModel, ReferenceIndexingMixin): sublocations = location.get_descendants(include_self=True) available_stock = available_stock.filter(location__in=[loc for loc in sublocations]) + if exclude_location: + # Exclude any stock items from the provided location + sublocations = exclude_location.get_descendants(include_self=True) + available_stock = available_stock.exclude(location__in=[loc for loc in sublocations]) + """ Next, we sort the available stock items with the following priority: 1. Direct part matches (+1) diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index ba43a079ff..4b55182563 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -717,6 +717,7 @@ class BuildAutoAllocationSerializer(serializers.Serializer): class Meta: fields = [ 'location', + 'exclude_location', 'interchangeable', 'substitutes', ] @@ -730,6 +731,15 @@ class BuildAutoAllocationSerializer(serializers.Serializer): help_text=_('Stock location where parts are to be sourced (leave blank to take from any location)'), ) + exclude_location = serializers.PrimaryKeyRelatedField( + queryset=StockLocation.objects.all(), + many=False, + allow_null=True, + required=False, + label=_('Exclude Location'), + help_text=_('Exclude stock items from this selected location'), + ) + interchangeable = serializers.BooleanField( default=False, label=_('Interchangeable Stock'), @@ -750,6 +760,7 @@ class BuildAutoAllocationSerializer(serializers.Serializer): build.auto_allocate_stock( location=data.get('location', None), + exclude_location=data.get('exclude_location', None), interchangeable=data['interchangeable'], substitutes=data['substitutes'], ) diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index ca909f82f7..21bddfd6ca 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -323,30 +323,78 @@ {% block js_ready %} {{ block.super }} -$('#btn-create-output').click(function() { +onPanelLoad('completed', function() { + loadStockTable($("#build-stock-table"), { + params: { + location_detail: true, + part_detail: true, + build: {{ build.id }}, + is_building: false, + }, + groupByField: 'location', + buttons: [ + '#stock-options', + ], + url: "{% url 'api-stock-list' %}", + }); +}); - createBuildOutput( - {{ build.pk }}, +onPanelLoad('children', function() { + loadBuildTable($('#sub-build-table'), { + url: '{% url "api-build-list" %}', + filterTarget: "#filter-list-sub-build", + params: { + ancestor: {{ build.pk }}, + } + }); +}); + +onPanelLoad('attachments', function() { + + enableDragAndDrop( + '#attachment-dropzone', + '{% url "api-build-attachment-list" %}', { - trackable_parts: {% if build.part.has_trackable_parts %}true{% else %}false{% endif%}, + data: { + build: {{ build.id }}, + }, + label: 'attachment', + success: function(data, status, xhr) { + location.reload(); + } } ); + + loadAttachmentTable('{% url "api-build-attachment-list" %}', { + filters: { + build: {{ build.pk }}, + }, + fields: { + build: { + value: {{ build.pk }}, + hidden: true, + } + } + }); }); -loadStockTable($("#build-stock-table"), { - params: { - location_detail: true, - part_detail: true, - build: {{ build.id }}, - is_building: false, - }, - groupByField: 'location', - buttons: [ - '#stock-options', - ], - url: "{% url 'api-stock-list' %}", +onPanelLoad('notes', function() { + $('#edit-notes').click(function() { + constructForm('{% url "api-build-detail" build.pk %}', { + fields: { + notes: { + multiline: true, + } + }, + title: '{% trans "Edit Notes" %}', + reload: true, + }); + }); }); +function reloadTable() { + $('#allocation-table-untracked').bootstrapTable('refresh'); +} // Get the list of BOM items required for this build inventreeGet( @@ -436,57 +484,16 @@ inventreeGet( } ); -loadBuildTable($('#sub-build-table'), { - url: '{% url "api-build-list" %}', - filterTarget: "#filter-list-sub-build", - params: { - ancestor: {{ build.pk }}, - } -}); +$('#btn-create-output').click(function() { - -enableDragAndDrop( - '#attachment-dropzone', - '{% url "api-build-attachment-list" %}', - { - data: { - build: {{ build.id }}, - }, - label: 'attachment', - success: function(data, status, xhr) { - location.reload(); + createBuildOutput( + {{ build.pk }}, + { + trackable_parts: {% if build.part.has_trackable_parts %}true{% else %}false{% endif%}, } - } -); - -loadAttachmentTable('{% url "api-build-attachment-list" %}', { - filters: { - build: {{ build.pk }}, - }, - fields: { - build: { - value: {{ build.pk }}, - hidden: true, - } - } + ); }); -$('#edit-notes').click(function() { - constructForm('{% url "api-build-detail" build.pk %}', { - fields: { - notes: { - multiline: true, - } - }, - title: '{% trans "Edit Notes" %}', - reload: true, - }); -}); - -function reloadTable() { - $('#allocation-table-untracked').bootstrapTable('refresh'); -} - {% if build.active %} $("#btn-auto-allocate").on('click', function() { @@ -578,5 +585,4 @@ $("#btn-order-parts").click(function() { enableSidebar('buildorder'); - {% endblock %} \ No newline at end of file diff --git a/InvenTree/build/templates/build/sidebar.html b/InvenTree/build/templates/build/sidebar.html index d0652cd3c1..4c22845980 100644 --- a/InvenTree/build/templates/build/sidebar.html +++ b/InvenTree/build/templates/build/sidebar.html @@ -9,10 +9,10 @@ {% include "sidebar_item.html" with label='allocate' text=text icon="fa-tasks" %} {% endif %} {% if not build.is_complete %} -{% trans "Pending Items" as text %} +{% trans "Incomplete Outputs" as text %} {% include "sidebar_item.html" with label='outputs' text=text icon="fa-tools" %} {% endif %} -{% trans "Completed Items" as text %} +{% trans "Completed Outputs" as text %} {% include "sidebar_item.html" with label='completed' text=text icon="fa-boxes" %} {% trans "Child Build Orders" as text %} {% include "sidebar_item.html" with label='children' text=text icon="fa-sitemap" %} diff --git a/InvenTree/common/apps.py b/InvenTree/common/apps.py index 58d05c0391..a2253c1066 100644 --- a/InvenTree/common/apps.py +++ b/InvenTree/common/apps.py @@ -23,7 +23,7 @@ class CommonConfig(AppConfig): try: import common.models - if common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED'): + if common.models.InvenTreeSetting.get_setting('SERVER_RESTART_REQUIRED', backup_value=False, create=False): logger.info("Clearing SERVER_RESTART_REQUIRED flag") common.models.InvenTreeSetting.set_setting('SERVER_RESTART_REQUIRED', False, None) except: diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index ef5ca70184..14253ad3b0 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -273,20 +273,24 @@ class BaseInvenTreeSetting(models.Model): # Setting does not exist! (Try to create it) if not setting: - # Attempt to create a new settings object - setting = cls( - key=key, - value=cls.get_setting_default(key, **kwargs), - **kwargs - ) + # Unless otherwise specified, attempt to create the setting + create = kwargs.get('create', True) - try: - # Wrap this statement in "atomic", so it can be rolled back if it fails - with transaction.atomic(): - setting.save() - except (IntegrityError, OperationalError): - # It might be the case that the database isn't created yet - pass + if create: + # Attempt to create a new settings object + setting = cls( + key=key, + value=cls.get_setting_default(key, **kwargs), + **kwargs + ) + + try: + # Wrap this statement in "atomic", so it can be rolled back if it fails + with transaction.atomic(): + setting.save() + except (IntegrityError, OperationalError): + # It might be the case that the database isn't created yet + pass return setting @@ -1258,7 +1262,14 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): ('MM/DD/YYYY', '02/22/2022'), ('MMM DD YYYY', 'Feb 22 2022'), ] - } + }, + + 'DISPLAY_SCHEDULE_TAB': { + 'name': _('Part Scheduling'), + 'description': _('Display part scheduling information'), + 'default': True, + 'validator': bool, + }, } class Meta: diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index d32ffdd033..ad7c0f051c 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -122,7 +122,7 @@ msgstr "Fehlende Datei" msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Anhang" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Link" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Link zu einer externen URL" @@ -152,11 +152,11 @@ msgstr "Kommentar" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Benutzer" @@ -193,17 +193,17 @@ msgstr "Fehler beim Umbenennen" msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Name" @@ -212,7 +212,7 @@ msgstr "Name" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Name" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Beschreibung" @@ -240,7 +240,7 @@ msgstr "Beschreibung (optional)" msgid "parent" msgstr "Eltern" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" @@ -501,7 +501,7 @@ msgstr "Vom übergeordneten Element geteilt" msgid "Split child item" msgstr "Unterobjekt geteilt" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Lagerartikel zusammengeführt" @@ -648,7 +648,7 @@ msgstr "Ungültige Wahl für übergeordneten Bauauftrag" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Bauauftrag" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Bauauftragsreferenz" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referenz" @@ -692,10 +692,10 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Teil" @@ -733,8 +733,8 @@ msgstr "Auftrag Referenz" msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Quell-Lagerort" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Bau-Statuscode" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Losnummer" @@ -783,7 +783,7 @@ msgstr "Losnummer" msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Erstelldatum" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Fertigstellungsdatum" @@ -805,7 +805,7 @@ msgstr "Fertigstellungsdatum" msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Aufgegeben von" @@ -816,9 +816,9 @@ msgstr "Nutzer der diesen Bauauftrag erstellt hat" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Verantwortlicher Benutzer" @@ -829,7 +829,7 @@ msgstr "Nutzer der für diesen Bauauftrag zuständig ist" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Externer Link" @@ -839,17 +839,17 @@ msgstr "Externer Link" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Notizen" @@ -869,69 +869,69 @@ msgstr "Endprodukt bereits hergstellt" msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Bauauftragsposition muss ein Endprodukt festlegen, da der übergeordnete Teil verfolgbar ist" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Zugewiesene Menge ({q}) darf nicht verfügbare Menge ({a}) übersteigen" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Bauauftrag" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Bauauftrag starten um Teile zuzuweisen" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Quell-Lagerartikel" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" @@ -998,7 +999,7 @@ msgstr "Menge der Endprodukte angeben" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" @@ -1013,7 +1014,7 @@ msgstr "Ganzzahl erforderlich da die Stückliste nachverfolgbare Teile enthält" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Seriennummer" @@ -1042,12 +1043,12 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Lagerort" @@ -1058,10 +1059,10 @@ msgstr "Lagerort für fertige Endprodukte" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Status" @@ -1097,8 +1098,8 @@ msgstr "Bauauftrag hat unvollständige Aufbauten" msgid "No build outputs have been created for this build order" msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "Stücklisten-Position" @@ -1135,23 +1136,31 @@ msgstr "Endprodukt kann bei Zuweisung nicht-verfolgter Teile nicht angegeben wer msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Zieldatum" @@ -1250,7 +1259,7 @@ msgstr "Überfällig" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Fertig" @@ -1262,7 +1271,7 @@ msgstr "Fertig" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Auftrag" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Aufgegeben von" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Unfertige Endprodukte" @@ -1311,7 +1321,7 @@ msgstr "Zugewiesene Teile" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Losnummer" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Erstellt" @@ -1340,7 +1350,7 @@ msgstr "Unter-Bauaufträge" msgid "Allocate Stock to Build" msgstr "Bestand Bauauftrag zuweisen" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Bestandszuordnung aufheben" @@ -1431,8 +1441,8 @@ msgstr "Fertiggestellte Endprodukte" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Anhänge" @@ -1441,27 +1451,27 @@ msgstr "Anhänge" msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Anmerkungen bearbeiten" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Neuer Bauauftrag" @@ -1485,13 +1495,9 @@ msgstr "Listen-Ansicht" msgid "Build Order Details" msgstr "Bauauftragdetails" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "Ausstehende Einträge" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" -msgstr "Abgeschlossene Elemente" +msgid "Completed Outputs" +msgstr "" #: build/views.py:73 msgid "Build was cancelled" @@ -1538,760 +1544,768 @@ msgstr "{name.title()} Datei" msgid "Select {name} file to upload" msgstr "{name} Datei zum Hochladen auswählen" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "Eine Einstellung wurde geändert, die einen Neustart des Servers erfordert" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "InvenTree Instanzname" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Firmenname" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Standardwährung" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Barcode-Scanner Unterstützung" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "Parameter-Daten für dieses Teil kopieren wenn das Teil dupliziert wird" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Test-Daten für dieses Teil kopieren wenn das Teil dupliziert wird" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Vorlage" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Komponente" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Preis in Formularen anzeigen" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Teilpreis in einigen Formularen anzeigen" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "Preis in Stückliste anzeigen" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "Preisinformationen in Stücklisten Tabellen einbeziehen" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "Preisverlauf anzeigen" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "Historische Preise für Teil anzeigen" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "Ausgangsbestand erstellen" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "Ausgangsbestand beim Erstellen von Teilen erstellen" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "Interner Preis als Stückliste-Preis" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Interner Preis (falls vorhanden) in Stücklisten-Preisberechnungen verwenden" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Test-Berichte" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "Anzahl an Tagen, an denen Bestand als abgestanden markiert wird, bevor sie ablaufen" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "Tage" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "Bauauftrag-Referenz Präfix" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "Präfix für Bauauftrag-Referenz" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "Bauauftrag-Referenz RegEx" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "RegEx Muster für die Zuordnung von Bauauftrag-Referenzen" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "Auftrags-Referenz Präfix" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "Präfix für Auftrags-Referenz" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Bestellungs-Referenz Präfix" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "Präfix für Bestellungs-Referenz" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Anmeldung erlauben" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "Bei der Registrierung den Benutzer zweimal nach der E-Mail-Adresse fragen" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "Aktuelle Teile-Stände" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "Anzahl der neusten Teile auf der Startseite" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "aktueller Bestand" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "Anzahl des geänderten Bestands auf der Startseite" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF-Labels im Browser anzeigen, anstatt als Datei herunterzuladen" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF-Berichte im Browser anzeigen, anstatt als Datei herunterzuladen" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "Anzahl der Ergebnisse, die in der Vorschau angezeigt werden sollen" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "Suche Bestand anzeigen" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "Bestand in Suchvorschau anzeigen" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "Position der InvenTree Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Preis" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "Name für diesen Webhook" msgid "Active" msgstr "Aktiv" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "Token" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "Secret" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "Host" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "Header" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "Body" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" @@ -2463,7 +2477,7 @@ msgstr "Anlaufstelle" msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Bild" @@ -2500,7 +2514,7 @@ msgstr "Währung" msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Basisteil" @@ -2515,12 +2529,12 @@ msgstr "Teil auswählen" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Hersteller" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Hersteller auswählen" @@ -2528,11 +2542,11 @@ msgstr "Hersteller auswählen" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" @@ -2557,8 +2571,8 @@ msgstr "Parametername" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Wert" @@ -2566,10 +2580,10 @@ msgstr "Wert" msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "Einheiten" @@ -2588,22 +2602,22 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Zulieferer auswählen" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU (Lagerbestandseinheit)" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Notiz" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Verpackungen" @@ -2644,7 +2658,7 @@ msgstr "Verpackungen" msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "Vielfache" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Bild von URL herunterladen" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Kunde" @@ -2739,7 +2753,7 @@ msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Neues Zuliefererteil" @@ -2747,8 +2761,8 @@ msgstr "Neues Zuliefererteil" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Optionen" @@ -2776,7 +2790,7 @@ msgstr "Herstellerteile" msgid "Create new manufacturer part" msgstr "Neues Herstellerteil anlegen" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Neues Herstellerteil" @@ -2790,7 +2804,7 @@ msgstr "Zulieferer-Bestand" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Neue Bestellung" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Neuer Auftrag" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Zugeordneter Bestand" @@ -2840,13 +2854,13 @@ msgstr "Firmenbemerkungen" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "Zuliefererteil entfernen?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "Alle ausgewählten Zulieferteile werden gelöscht" @@ -2863,7 +2877,7 @@ msgstr "Hersteller" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Teil bestellen" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Zulieferer" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Zuliefererteil entfernen" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Löschen" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Parameter" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "Parameter löschen" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "Parameter hinzufügen" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "Zugewiesene Lagerartikel" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -2979,7 +2993,7 @@ msgstr "Neuen Lagerartikel hinzufügen" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "Neuer Lagerartikel" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "Zulieferer-Bestellungen" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "Teil bestellen" @@ -3030,10 +3044,10 @@ msgstr "Preisstaffel löschen" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Bestand" @@ -3056,7 +3070,7 @@ msgstr "Bepreisung" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Lagerartikel" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "Bestellung" @@ -3328,8 +3342,8 @@ msgstr "Bestellung" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Bestellung" @@ -3339,7 +3353,7 @@ msgstr "Zuliefererteil" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "Empfangen" @@ -3348,9 +3362,9 @@ msgstr "Empfangen" msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Preis" @@ -3606,7 +3620,7 @@ msgstr "Bestellungsbeschreibung" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Bestellstatus" @@ -3679,9 +3693,9 @@ msgstr "Zulieferer-Teil auswählen" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Zeile entfernen" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "Ausstehende Sendungen" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "Aktionen" @@ -3930,35 +3944,51 @@ msgstr "Stückpreis für {part} auf {price} aktualisiert" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} Stückpreis auf {price} und Menge auf {qty} aktualisiert" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "Gültig" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "Muss größer als 0 sein" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "Muss eine gültige Nummer sein" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "Standort für anfänglichen Bestand angeben" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "Dieses Feld ist erforderlich" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Standard-Lagerort" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "Verfügbarer Bestand" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "Bestellt" @@ -3992,448 +4022,448 @@ msgstr "Parameter-Vorlage zu allen Kategorien hinzufügen" msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "Standard Stichwörter" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Teile" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "Ungültige Auswahl für übergeordnetes Teil" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "Nächste verfügbare Seriennummern wären" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "Nächste verfügbare Seriennummer ist" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "Die neuste Seriennummer ist" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "Variante von" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Schlüsselwörter" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Kategorie" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Revision" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimaler Bestand" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "Test-Vorlagen können nur für verfolgbare Teile angelegt werden" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Benötigt" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "Muss für diesen Test ein Wert für das Test-Ergebnis eingetragen werden?" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "Muss für diesen Test ein Anhang für das Test-Ergebnis hinzugefügt werden?" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "Ungültiges Zeichen im Vorlagename ({c})" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "Einheit des Parameters" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "Wert" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "Teil-ID" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "Name des Teils" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "Teil-ID" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "Stufe" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Optional" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Geerbt" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Diese Stücklisten-Position wird in die Stücklisten von Teil-Varianten vererbt" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Bestand von Varianten kann für diese Stücklisten-Position verwendet werden" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Fehler bei Verwandschaft: Ist das Teil mit sich selbst verwandt oder ist das die Verwandtschaft nicht eindeutig?" @@ -4532,7 +4562,7 @@ msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am msgid "The BOM for %(part)s has not been validated." msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "Stücklisten-Aktionen" @@ -4641,46 +4671,43 @@ msgstr "Ein weiteres Teil anlegen" msgid "Part created successfully" msgstr "Teil erfolgreich angelegt" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "Sind Sie sicher, dass Sie diese Kategorie löschen wollen" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "Diese Kategorie enthält %(count)s Unter-Kategorien" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "Wenn diese Kategorie gelöscht wird, werden alle Unter-Kat. verschoben nach" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "Kategorie" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" -msgstr "oberste Teil-Kategorie" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" +msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "Diese Kategorie enthält %(count)s Teile" +msgid "If this category is deleted, these parts will be moved to %(category)s" +msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die übergeordnete Kategorie %(path)s verschoben" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" -msgstr "Wenn diese Kat. gelöscht wird, werden diese Teile in die oberste Kat. verschoben" +msgid "If this category is deleted, these parts will be moved to the top level part category" +msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "Teile importieren" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "Teil duplizieren" @@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - %(desc)s (%(match_per)s%% übereinstimmend)" msgid "Part Stock" msgstr "Teilbestand" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "Teil-Bestandszuordnungen" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "Teil Test-Vorlagen" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "Verkaufsauftragszuweisungen" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "Teil Varianten" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "Neue Variante anlegen" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "neue Variante anlegen" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "Parameter hinzufügen" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "Verknüpfte Teile" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "Stückliste" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "Export-Aktionen" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Stückliste exportieren" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "Stücklisten-Bericht drucken" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "Stückliste hochladen" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "Stückliste überprüfen" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "Neue Stücklisten-Position" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "Stücklisten-Position hinzufügen" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "Baugruppen" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "Gefertigte Teile" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "Bauauftragszuweisungen" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "Zulieferer" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "Herstellerteile löschen" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "Ausgewählte Stücklistenpositionen löschen?" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "Stücklisten-Position anlegen" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "verknüpftes Teil" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "Teilenotizen bearbeiten" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Stückpreis Einkauf - %(currency)s" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Stückpreis Differenz - %(currency)s" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Stückpreis Zulieferer - %(currency)s" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "Stückpreis - %(currency)s" @@ -4996,7 +5023,7 @@ msgstr "Teil ist virtuell (kein physisches Teil)" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Inaktiv" @@ -5031,8 +5058,8 @@ msgstr "Zu Bauaufträgen zugeordnet" msgid "Can Build" msgstr "Herstellbar" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "Im Bau" @@ -5131,7 +5158,11 @@ msgstr "Benutzt in" msgid "Allocations" msgstr "Zuweisungen" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "Testvorlagen" @@ -5249,8 +5280,8 @@ msgid "Set category for the following parts" msgstr "Kategorie für Teile setzen" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Kein Bestand" @@ -5365,7 +5396,7 @@ msgstr "Teilparametervorlage bearbeiten" msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "Teil-Kategorie bearbeiten" @@ -5603,12 +5634,12 @@ msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Seriennummer" @@ -5617,19 +5648,19 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "Ergebnis" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "Datum" @@ -5647,8 +5678,8 @@ msgid "Installed Items" msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "Seriennummer" @@ -5664,9 +5695,9 @@ msgstr "Gültiges Teil muss angegeben werden" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Seriennummern können für nicht verfolgbare Teile nicht angegeben werden" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -5706,228 +5737,228 @@ msgstr "nicht mehr verbauen bestätigen" msgid "Confirm removal of installed stock items" msgstr "Entfernen der verbauten Lagerartikel bestätigen" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als 1 ist" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "Teil muss eine Referenz haben wenn is_building wahr ist" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "Die Verpackung dieses Lagerartikel ist gelagert in" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "verbaut in" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Ablaufdatum für Lagerartikel. Bestand wird danach als abgelaufen gekennzeichnet" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "Lagerartikel-Notizen" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seriennummern {exists} existieren bereits" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "Test Notizen" @@ -6081,11 +6112,11 @@ msgstr "Testdaten hinzufügen" msgid "Installed Stock Items" msgstr "Installierte Lagerartikel" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" @@ -6210,7 +6241,7 @@ msgid "Stale" msgstr "überfällig" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -6247,7 +6278,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Diesesr Lagerartikel ist serialisiert. Es hat eine eindeutige Seriennummer und die Anzahl kann nicht angepasst werden." #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Kein Lagerort gesetzt" @@ -6276,7 +6307,7 @@ msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nic msgid "Read only" msgstr "Nur Leserechte" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "Bestandsstatus bearbeiten" @@ -6357,10 +6388,38 @@ msgstr "Druck Aktionen" msgid "Print labels" msgstr "Label drucken" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "Sind Sie sicher, dass Sie diesen Lagerort löschen wollen?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "Lade..." @@ -6442,7 +6501,7 @@ msgstr "Lagerartikel-QR-Code" msgid "Uninstall Stock Items" msgstr "Lagerartikel deinstallieren" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" @@ -6450,7 +6509,7 @@ msgstr "Bestands-Anpassung bestätigen" msgid "Uninstalled stock items" msgstr "Lagerartikel deinstalliert" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "Lagerartikel bearbeiten" @@ -6462,7 +6521,7 @@ msgstr "Neuen Lagerort erstellen" msgid "Create new Stock Item" msgstr "Neuen Lagerartikel hinzufügen" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "Bestand duplizieren" @@ -7059,60 +7118,60 @@ msgstr "%(time)s vor" msgid "Do you really want to remove the selected email address?" msgstr "Möchten Sie die ausgewählte E-Mail-Adresse wirklich entfernen?" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "Anzeige-Einstellungen" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "Stil auswählen" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "Design auswählen" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "Spracheinstellung" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "Sprache festlegen" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "%(lang_translated)s%% übersetzt" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "Keine Übersetzungen verfügbar" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "Sprache festlegen" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "Einige Sprachen sind nicht vollständig übersetzt" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "Zeige nur ausreichende" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "und versteckt." -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "Auch unvollständige anzeigen" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "Hilf bei der Übersetzung!" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "Die Übersetzung von InvenTree wird von Nutzern via Crowdin betrieben. Wir ermutigen zur und freuen uns über jede Mithilfe." @@ -7416,8 +7475,8 @@ msgstr "Benötigte Menge" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Verfügbar" @@ -7609,7 +7668,7 @@ msgstr "Dadurch wird die Verknüpfung zwischen diesem Lagerartikel und dem Barco msgid "Unlink" msgstr "Entfernen" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "Lagerartikel entfernen" @@ -7749,7 +7808,7 @@ msgstr "Stücklisten Ersatzteile bearbeiten" msgid "Substitutes Available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "Varianten erlaubt" @@ -7801,7 +7860,7 @@ msgstr "Keine Stücklisten-Position(en) gefunden" msgid "Are you sure you want to delete this BOM item?" msgstr "Sind Sie sicher, dass Sie diese Stücklisten-Position löschen wollen?" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "benötigtes Teil" @@ -7915,137 +7974,141 @@ msgstr "Standort nicht angegeben" msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Bestands-Zuordnung bearbeiten" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "Zuordnung bearbeiten" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "Zuordnung entfernen" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "Anzahl pro" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "Zugeordnet" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "Bestand bauen" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "Bestand bestellen" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "Bestand zuweisen" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Teile auswählen" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "Sie müssen mindestens ein Teil auswählen" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "Wählen Sie den Quellort aus (leer lassen um von allen Standorten zu nehmen)" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Bestandszuordnung bestätigen" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "Lagerartikel für Bauauftrag zuweisen" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "Keine passenden Lagerstandorte" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "Keine passenden Lagerbestände" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "Auswählen" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "Keine Information" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "Keine Teile zugeordnet zu" @@ -8110,34 +8173,34 @@ msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "Vorlagenteil" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "Keine Parameter gefunden" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "Parameter löschen" @@ -8246,7 +8309,7 @@ msgid "NO" msgstr "NEIN" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "Lagerartikel auswählen" @@ -8443,7 +8506,7 @@ msgstr "Seriennummern hinzufügen" msgid "Quantity to receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "Status" @@ -8467,7 +8530,7 @@ msgstr "Empfang der Teile bestätigen" msgid "Receive Purchase Order Items" msgstr "Bestellpositionen erhalten" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" @@ -8496,7 +8559,7 @@ msgid "Total" msgstr "Summe" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "Stück-Preis" @@ -8505,11 +8568,11 @@ msgid "Total Price" msgstr "Gesamtpreis" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "Diese Position ist überfällig" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "Position empfangen" @@ -8590,7 +8653,7 @@ msgid "Delete Stock Allocation" msgstr "Bestands-Zuordnung löschen" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "an Kunde versand" @@ -8630,237 +8693,245 @@ msgstr "Stückpreis aktualisieren" msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Teileigenschaften" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "Erstellungsoptionen für Teile" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "Einstellungen für Teilkopien" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "Zuliefereroptionen" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "Anfänglichen Bestand erstellen" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "Anfänglichen Bestand für dieses Teil erstellen" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "Menge des anfänglichen Bestands für dieses Teil angeben" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "Zielstandort auswählen" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Bauteilkategorie kopieren" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "Zuliefererdaten hinzufügen" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "Erstelle ersten Lieferanten für dieses Teil" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "Bild kopieren" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "Übergeordnete Teilkategorie" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "Teil bearbeiten" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "Teil bearbeitet" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "Teil-Variante anlegen" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "Benachrichtigungen für dieses Teil abonnieren" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "Stückliste prüfen" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "überprüfte Stückliste" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "Stückliste kopieren" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "Nachverfolgbares Teil" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "virtuelles Teil" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "Abonnierter Teil" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "Keine Kategorie" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "Listenansicht" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "Rasteransicht" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "Baumansicht" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "Pfad" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Testvorlagen" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "Dieses Testergebnis ist für ein Hauptteil" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "Testergebnis-Vorlage bearbeiten" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "Testergebnis-Vorlage löschen" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "Keine ${human_name} Informationen gefunden" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "${human_name} bearbeiten" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "${human_name} löschen" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "Einzelpreis" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "Einzelpreisdifferenz" @@ -8962,328 +9033,332 @@ msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "Neuer Lagerartikel erstellt" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "Mehrere Lagerartikel erstellt" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "Seriennummer finden" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "Seriennummer eingeben" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "Eine Seriennummer eingeben" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "Keine passende Seriennummer" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "Mehrere Ergebnisse gefunden" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "Bestand Zuweisung bestätigen" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "Einem Kunden zuordnen" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "Zusammenführung der Artikel bestätigen" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "Artikel zusammenführen" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "Bestand verschieben" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "Verschieben" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "Bestand zählen" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "Anzahl" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "Bestand entfernen" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "Entfernen" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Hinzufügen" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "Bestand löschen" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "Bestandsanzahl angeben" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "Sie müssen mindestens einen Lagerartikel auswählen" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "ERFOLGREICH" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "FEHLGESCHLAGEN" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "KEIN ERGEBNIS" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "Test bestanden" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "Testergebnis hinzufügen" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "Keine Testergebnisse gefunden" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "Testdatum" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "Testergebnis löschen" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "In Arbeit" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "In Lagerartikel installiert" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "Auftrag zugewiesen" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "Lagerartikel wird produziert" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "Lagerartikel wurde Auftrag zugewiesen" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "Lagerartikel wurde Kunden zugewiesen" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "Lagerartikel ist abgelaufen" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "Lagerartikel läuft demnächst ab" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "Serialisierter Lagerartikel wurde zugewiesen" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "Lagerartikel wurde vollständig zugewiesen" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "Lagerartikel wurde teilweise zugewiesen" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "Lagerartikel in anderem Element verbaut" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "Lagerartikel abgewiesen" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "Lagerartikel verloren" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "Lagerartikel zerstört" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "gelöscht" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "Inventur" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "Zuliefererteil nicht angegeben" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerartikel" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "Teile" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "lose" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "Lagerorte" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "unbekannter Lagerort" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "Status setzen" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "Status Code setzen" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "Status Code muss ausgewählt werden" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "Zugewiesene Menge" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Details" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "Standort nicht mehr vorhanden" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "Bestellung existiert nicht mehr" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "Kunde existiert nicht mehr" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "Lagerartikel existiert nicht mehr" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Hinzugefügt" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "Entfernt" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "Tracking-Eintrag bearbeiten" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "Tracking-Eintrag löschen" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "Keine installierten Elemente" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "Lagerartikel entfernen" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "Einen weiteren Lagerartikel in dieses Teil installiert" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "Dieser Lagerartikel ist aktuell vorhanden" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "Der Lagerartikel ist serialisiert und gehört nicht zu einem anderen Teil" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "Teil zur Installation auswählen" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 56ce7113b1..efa044462b 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "" @@ -212,7 +212,7 @@ msgstr "" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "" @@ -240,7 +240,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 5a98361692..46ffeff58c 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -122,7 +122,7 @@ msgstr "Archivo no encontrado" msgid "Missing external link" msgstr "Falta enlace externo" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Archivo adjunto" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Seleccionar archivo para adjuntar" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Enlace" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Enlace a URL externa" @@ -152,11 +152,11 @@ msgstr "Comentario" msgid "File comment" msgstr "Comentario del archivo" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Usuario" @@ -193,17 +193,17 @@ msgstr "Error al cambiar el nombre del archivo" msgid "Invalid choice" msgstr "Selección no válida" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Nombre" @@ -212,7 +212,7 @@ msgstr "Nombre" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Nombre" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Descripción" @@ -240,7 +240,7 @@ msgstr "Descripción (opcional)" msgid "parent" msgstr "padre" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Debe ser un numero valido" @@ -501,7 +501,7 @@ msgstr "Separar del elemento principal" msgid "Split child item" msgstr "Dividir elemento secundario" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Artículos de stock combinados" @@ -648,7 +648,7 @@ msgstr "Opción no válida para la construcción padre" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Construir órden" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Número de orden de construcción o armado" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referencia" @@ -692,10 +692,10 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Parte" @@ -733,8 +733,8 @@ msgstr "Referencia de orden de venta" msgid "SalesOrder to which this build is allocated" msgstr "Orden de Venta a la que se asigna" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Ubicación de la fuente" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Código de estado de construcción" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Numero de lote" @@ -783,7 +783,7 @@ msgstr "Numero de lote" msgid "Batch code for this build output" msgstr "Número de lote de este producto final" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Fecha de Creación" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Fecha de finalización" @@ -805,7 +805,7 @@ msgstr "Fecha de finalización" msgid "completed by" msgstr "terminado por" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Emitido por" @@ -816,9 +816,9 @@ msgstr "El usuario que emitió esta orden" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Responsable" @@ -829,7 +829,7 @@ msgstr "Usuario responsable de esta orden" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Link externo" @@ -839,17 +839,17 @@ msgstr "Link externo" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Notas" @@ -869,69 +869,69 @@ msgstr "La construcción de la salida ya está completa" msgid "Build output does not match Build Order" msgstr "La salida de la construcción no coincide con el orden de construcción" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "Artículo de stock sobreasignado" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Cantidad asignada debe ser mayor que cero" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "La cantidad debe ser 1 para el stock serializado" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Artículo de stock seleccionado no encontrado en BOM" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Construcción o Armado" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Armar para asignar partes" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Artículo de stock" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Producto original de stock" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Producto original de stock" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Cantidad" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Cantidad de stock a asignar para construir" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Instalar en" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Artículo de stock de destino" @@ -998,7 +999,7 @@ msgstr "Ingrese la cantidad para la producción de la construcción" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La cantidad debe ser mayor que cero" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Números de serie" @@ -1042,12 +1043,12 @@ msgstr "Debe proporcionarse una lista de salidas de construcción" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Unicación" @@ -1058,10 +1059,10 @@ msgstr "Ubicación para las salidas de construcción completadas" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Estado" @@ -1097,8 +1098,8 @@ msgstr "El orden de construcción tiene salidas incompletas" msgid "No build outputs have been created for this build order" msgstr "No se han creado salidas para esta orden de construcción" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "Item de Lista de Materiales" @@ -1135,23 +1136,31 @@ msgstr "La salida de construcción no se puede especificar para la asignación d msgid "Allocation items must be provided" msgstr "Debe proporcionarse la adjudicación de artículos" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "Stock no ha sido asignado completamente a este pedido de construcción" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Fecha objetivo" @@ -1250,7 +1259,7 @@ msgstr "Vencido" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Completados" @@ -1262,7 +1271,7 @@ msgstr "Completados" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Orden de Venta" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Emitido por" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Salidas incompletas" @@ -1311,7 +1321,7 @@ msgstr "Partes asignadas" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Lote" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Creado" @@ -1340,7 +1350,7 @@ msgstr "Órdenes de Trabajo herederas" msgid "Allocate Stock to Build" msgstr "Asignar Stock a Trabajo" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Desasignar stock" @@ -1431,8 +1441,8 @@ msgstr "Salidas de Trabajo Completadas" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Adjuntos" @@ -1441,27 +1451,27 @@ msgstr "Adjuntos" msgid "Build Notes" msgstr "Notas del Trabajo" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Editar notas" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Asignación completa" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "Todos los artículos de stock no rastreados han sido asignados" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Nueva Orden de Trabajo" @@ -1485,13 +1495,9 @@ msgstr "Mostrar vista de lista" msgid "Build Order Details" msgstr "Configuración de Pedido de Trabajo" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "Artículos pendientes" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" -msgstr "Elementos completados" +msgid "Completed Outputs" +msgstr "" #: build/views.py:73 msgid "Build was cancelled" @@ -1538,760 +1544,768 @@ msgstr "Archivo {name.title()}" msgid "Select {name} file to upload" msgstr "Seleccione el archivo {name} para subir" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Valor de ajuste" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "El valor elegido no es una opción válida" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "El valor debe ser un valor booleano" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "El valor debe ser un entero" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "Cadena de clave debe ser única" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Sin grupo" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Reinicio requerido" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "Nombre de Instancia de InvenTree" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "Descriptor de cadena para la instancia del servidor" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Usar nombre de instancia" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Utilice el nombre de la instancia en la barra de título" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nombre de empresa" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Nombre interno de empresa" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "URL Base" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "URL base para la instancia del servidor" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Moneda predeterminada" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Moneda predeterminada" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Descargar desde URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Soporte de código de barras" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Habilitar soporte para escáner de código de barras" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Patrón de expresión regular para IPN de la parte coincidente" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Permitir IPN duplicado" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Permitir que varias partes compartan el mismo IPN" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Permitir editar IPN" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Permite cambiar el valor de IPN mientras se edita una pieza" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "Copiar parte de datos BOM" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "Copiar datos BOM por defecto al duplicar una parte" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "Copiar Parámetros de Pieza" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "Copiar parte de datos de prueba" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Copiar plantillas de parámetros de categoría" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Copiar plantillas de parámetros de categoría al crear una parte" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Plantilla" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Las piezas son plantillas por defecto" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Montaje" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Las piezas pueden ser ensambladas desde otros componentes por defecto" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Componente" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Las piezas pueden ser usadas como subcomponentes por defecto" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Comprable" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Las piezas son comprables por defecto" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Vendible" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Las piezas se pueden vender por defecto" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Rastreable" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Las piezas son rastreables por defecto" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtual" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Las piezas son virtuales por defecto" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Mostrar importación en vistas" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Mostrar el asistente de importación en algunas vistas de partes" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Mostrar precio en formularios" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Mostrar precio de la pieza en algunos formularios" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "Mostrar precio en BOM" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "Incluye información de precios en tablas BOM" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "Mostrar Historial de Precios" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "Mostrar el precio histórico de la parte" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "Mostrar piezas relacionadas" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "Mostrar partes relacionadas para una pieza" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "Crear stock inicial" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "Crear stock inicial en la creación de partes" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Precios internos" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "Habilitar precios internos para piezas" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "Precio interno como precio de BOM" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Usar el precio interno (si está establecido) en los cálculos de precios BOM" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "Formato de visualización de Nombre de Parte" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "Formato para mostrar el nombre de la pieza" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "Habilitar informes" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "Habilitar generación de informes" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuración" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "Generar informes en modo de depuración (salida HTML)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Tamaño de página" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "Tamaño de página predeterminado para informes PDF" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Informe de prueba" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "Habilitar generación de informes de prueba" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "Expiración de stock" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "Habilitar la funcionalidad de expiración de stock" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "Vender existencias caducadas" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "Permitir venta de existencias caducadas" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "Tiempo histórico de Stock" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "días" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "Crear Stock Caducado" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "Permitir crear con stock caducado" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "Control de Stock" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "Prefijo de Referencia de Orden de Trabajo" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "Valor de prefijo para referencia de la orden de trabajo" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "Regex de Referencia de Orden de Trabajo" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "Patrón de expresión regular para referencia de orden de trabajo coincidente" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "Prefijo de referencia de pedido de venta" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "Valor del prefijo para referencia del pedido de venta" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Prefijo de orden de compra" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "Valor del prefijo para referencia de la orden de compra" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Habilitar función de contraseña olvidada" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Habilitar registro" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "Habilitar SSO" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "Habilitar SSO en las páginas de inicio de sesión" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "Email requerido" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "Requiere usuario para suministrar correo al registrarse" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "Auto-rellenar usuarios SSO" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "Correo dos veces" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "Al registrarse pregunte dos veces a los usuarios por su correo" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "Contraseña dos veces" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "Grupo al registrarse" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "Grupo al que se asignan nuevos usuarios al registrarse" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "Forzar MFA" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "Los usuarios deben utilizar seguridad multifactor." -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "Habilitar integración de URL" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "Habilitar plugins para añadir rutas de URL" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "Habilitar integración de navegación" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "Habilitar plugins para integrar en la navegación" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "Habilitar integración de la aplicación" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "Habilitar plugins para añadir aplicaciones" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "Habilitar integración de programación" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "Habilitar plugins para ejecutar tareas programadas" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "Habilitar integración de eventos" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "Habilitar plugins para responder a eventos internos" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "Mostrar partes suscritas" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "Mostrar las partes suscritas en la página principal" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "Mostrar categorías suscritas" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "Mostrar categorías de partes suscritas en la página de inicio" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Mostrar últimas partes" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "Mostrar las últimas partes en la página de inicio" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "Conteo de Partes Recientes" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "Número de partes recientes a mostrar en la página de índice" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "Mostrar BOMs no validadas" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "Mostrar BOMs que esperan validación en la página de inicio" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "Mostrar cambios recientes de stock" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "Conteo Reciente de Stock" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "Número de elementos de stock recientes a mostrar en la página de índice" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "Mostrar stock bajo" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "Mostrar artículos de stock bajo en la página de inicio" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "Mostrar stock agotado" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "Mostrar artículos agotados en la página de inicio" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "Mostrar stock necesario" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar elementos de stock necesarios para trabajos en la página de inicio" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "Mostrar stock caducado" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "Mostrar artículos de stock caducados en la página de inicio" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "Mostrar stock obsoleto" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "Mostrar elementos de stock obsoletos en la página de inicio" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "Mostrar trabajos pendientes" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "Mostrar trabajos vencidos" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "Mostrar Órdenes de Compra Pendientes" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "Mostrar las OC destacadas en la página de inicio" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "Mostrar OC atrasadas" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "Mostrar las OC vencidas en la página de inicio" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "Mostrar OV pendiemtes" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "Mostrar OV pendientes en la página de inicio" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "Mostrar OV atrasadas" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "Mostrar OV atrasadas en la página de inicio" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "Mostrar etiqueta interior" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "Mostrar informe en línea" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "Resultados de la vista previa" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "Número de resultados a mostrar en la ventana de vista previa de búsqueda" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "Buscar Mostrar Stock" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "Mostrar niveles de stock en la ventana de vista previa de búsqueda" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "Ocultar Partes Inactivas" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "Ocultar partes inactivas en la ventana de vista previa de búsqueda" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "Mostrar cantidad en formularios" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "Mostrar la cantidad de piezas disponibles en algunos formularios" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "Formularios de cierre de teclas de escape" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "Usa la clave de escape para cerrar formularios modales" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "Barra de navegación fija" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "La posición de la barra de navegación de InvenTree se fija en la parte superior de la pantalla" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "Cantidad de salto de precio" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Precio" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "Precio unitario a la cantidad especificada" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "Endpoint" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "Punto final en el que se recibe este webhook" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "Nombre para este webhook" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "Nombre para este webhook" msgid "Active" msgstr "Activo" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "Está activo este webhook" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "Token" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "Token para el acceso" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "Clave" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "Secreto compartido para HMAC" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "ID de mensaje" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "Identificador único para este mensaje" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "Host" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "Servidor desde el cual se recibió este mensaje" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "Encabezado" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "Encabezado del mensaje" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "Cuerpo" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "Cuerpo de este mensaje" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "Endpoint en el que se recibió este mensaje" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "Trabajado en" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "¿El trabajo en este mensaje ha terminado?" @@ -2463,7 +2477,7 @@ msgstr "Punto de contacto" msgid "Link to external company information" msgstr "Enlace a información externa de la empresa" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Imágen" @@ -2500,7 +2514,7 @@ msgstr "Moneda" msgid "Default currency used for this company" msgstr "Moneda predeterminada utilizada para esta empresa" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Parte base" @@ -2515,12 +2529,12 @@ msgstr "Seleccionar pieza" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Fabricante" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Seleccionar fabricante" @@ -2528,11 +2542,11 @@ msgstr "Seleccionar fabricante" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Número de Parte del Fabricante" @@ -2557,8 +2571,8 @@ msgstr "Nombre del parámetro" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Valor" @@ -2566,10 +2580,10 @@ msgstr "Valor" msgid "Parameter value" msgstr "Valor del parámetro" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "Unidades" @@ -2588,22 +2602,22 @@ msgstr "La parte vinculada del fabricante debe hacer referencia a la misma pieza #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Proveedor" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Seleccionar proveedor" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "Unidad de mantenimiento de stock de proveedores" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "Descripción de la parte del proveedor" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Nota" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "costo base" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Paquetes" @@ -2644,7 +2658,7 @@ msgstr "Paquetes" msgid "Part packaging" msgstr "Embalaje de partes" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "múltiple" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Descargar desde URL" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Cliente" @@ -2739,7 +2753,7 @@ msgstr "Crear nueva parte del proveedor" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Nueva Parte de Proveedor" @@ -2747,8 +2761,8 @@ msgstr "Nueva Parte de Proveedor" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Opciones" @@ -2776,7 +2790,7 @@ msgstr "Partes del fabricante" msgid "Create new manufacturer part" msgstr "Crear nueva pieza de fabricante" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Nueva pieza de fabricante" @@ -2790,7 +2804,7 @@ msgstr "Stock del Proveedor" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Nueva orden de compra" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Nueva orden de venta" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Stock asignado" @@ -2840,13 +2854,13 @@ msgstr "Notas de la empresa" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "¿Eliminar piezas de proveedor?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "Se eliminarán todas las partes del proveedor seleccionadas" @@ -2863,7 +2877,7 @@ msgstr "Fabricantes" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Pedir ítem" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Proveedores" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Eliminar partes del proveedor" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Eliminar" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Parámetros" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "Eliminar parámetro" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "Añadir parámetro" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "Elementos de Stock Asignados" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "Ítems de Proveedor" @@ -2979,7 +2993,7 @@ msgstr "Crear nuevo artículo de stock" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "Nuevo artículo de stock" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "Pedidos de piezas al proveedor" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "Pedir ítem" @@ -3030,10 +3044,10 @@ msgstr "Eliminar precio de descuento" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Inventario" @@ -3056,7 +3070,7 @@ msgstr "Precios" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Elementos de stock" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "La pieza del proveedor debe coincidir con el proveedor" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "Orden" @@ -3328,8 +3342,8 @@ msgstr "Orden" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Orden de compra" @@ -3339,7 +3353,7 @@ msgstr "Ítems de Proveedor" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "Recibido" @@ -3348,9 +3362,9 @@ msgstr "Recibido" msgid "Number of items received" msgstr "Número de artículos recibidos" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Precio de Compra" @@ -3606,7 +3620,7 @@ msgstr "Descripción del pedido" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Estado del pedido" @@ -3679,9 +3693,9 @@ msgstr "Seleccionar Parte de Proveedor" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Eliminar fila" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "Envíos pendientes" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "Acciones" @@ -3930,35 +3944,51 @@ msgstr "Actualizado el precio unitario de {part} a {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "Válido" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "Validación de Lista de Materiales" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "Esta opción debe ser seleccionada" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "Debe ser mayor que 0" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "Debe ser una cantidad válida" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "Especificar ubicación para el stock inicial de piezas" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "Este campo es obligatorio" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Ubicación Predeterminada" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "Stock Disponible" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "En pedido" @@ -3992,448 +4022,448 @@ msgstr "Añadir plantilla de parámetro a todas las categorías" msgid "Input quantity for price calculation" msgstr "Cantidad de entrada para el cálculo del precio" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Ubicación predeterminada para partes de esta categoría" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "Palabras clave predeterminadas" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "Palabras clave por defecto para partes en esta categoría" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoría de parte" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "Categorías de parte" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Partes" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "Opción no válida para la parte principal" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "La parte '{p1}' se utiliza en BOM para '{p2}' (recursivo)" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "Próximos números de serie disponibles son" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "El siguiente número de serie disponible es" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "El número de serie más reciente es" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN duplicado no permitido en la configuración de partes" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Nombre de la pieza" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "Es plantilla" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "¿Es esta parte una parte de la plantilla?" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "¿Es esta parte una variante de otra parte?" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "Variante de" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Descripción de la pieza" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Palabras claves" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Categoría" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "Categoría de parte" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "Número de parte interna" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Revisión de parte o número de versión" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Revisión" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "¿Dónde se almacena este elemento normalmente?" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Proveedor por defecto" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "Parte de proveedor predeterminada" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "Expiración por defecto" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Stock mínimo" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "Nivel mínimo de stock permitido" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "Unidades de mantenimiento de stock para esta parte" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "¿Se puede construir esta pieza a partir de otras piezas?" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "¿Se puede utilizar esta pieza para construir otras partes?" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "¿Esta parte tiene seguimiento de objetos únicos?" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "¿Se puede comprar esta pieza a proveedores externos?" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "¿Se puede vender esta pieza a los clientes?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "¿Está activa esta parte?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "¿Es ésta una parte virtual, como un producto de software o una licencia?" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "Notas de parte - soporta formato Markdown" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "BOM checksum" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "Suma de control BOM almacenada" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "BOM comprobado por" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "Fecha BOM comprobada" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "Creación de Usuario" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "Vender múltiples" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "Ya existe una prueba con este nombre para esta parte" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Nombre de prueba" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "Introduzca un nombre para la prueba" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "Descripción de prueba" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "Introduce la descripción para esta prueba" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Requerido" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "¿Es necesario pasar esta prueba?" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "Requiere valor" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "Adjunto obligatorio" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "Carácter no válido en el nombre de la plantilla ({c})" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "El nombre de parámetro en la plantilla tiene que ser único" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "Nombre de Parámetro" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "Unidad del Parámetro" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "Parte principal" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "Plantilla de parámetro" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "Data" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "Valor del parámetro" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "Valor predeterminado" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "Valor de parámetro por defecto" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "ID de Parte" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "Seleccionar parte principal" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "Sub parte" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "Seleccionar parte a utilizar en BOM" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "Cantidad del artículo en BOM" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcional" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "Este elemento BOM es opcional" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Exceso" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "Referencia de artículo de BOM" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "Notas del artículo de BOM" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "Checksum" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "Suma de comprobación de la línea en BOM" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Heredado" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Este artículo BOM es heredado por BOMs para partes variantes" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "Permitir variantes" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "La cantidad debe ser un valor entero para las partes rastreables" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "Debe especificar la subparte" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "Ítem de BOM sustituto" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "La parte sustituta no puede ser la misma que la parte principal" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "Artículo BOM superior" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "Sustituir parte" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "Parte 1" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "Parte 2" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "Seleccionar parte relacionada" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Error al crear relación: compruebe que la parte no está relacionada con sí misma y que la relación es única" @@ -4532,7 +4562,7 @@ msgstr "El BOM para %(part)s fue revisado por última vez por %(checker msgid "The BOM for %(part)s has not been validated." msgstr "El BOM para %(part)s no ha sido validada." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "Acciones BOM" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "¿Está seguro que desea eliminar la categoría" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "Esta categoría contiene %(count)s subcategorías" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "Si se elimina esta categoría, estas categorías se moverán a la" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "categoría" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" -msgstr "categoría de piezas de alto nivel" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" +msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "Esta categoría contiene %(count)s partes" +msgid "If this category is deleted, these parts will be moved to %(category)s" +msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "Si se elimina esta categoría, estas partes se moverán a la categoría principal %(path)s" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" -msgstr "Si se elimina esta categoría, estas partes se moverán a la categoría principal" +msgid "If this category is deleted, these parts will be moved to the top level part category" +msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "Importar Partes" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "Duplicar Parte" @@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - %(desc)s (%(match_per)s%% coincidencia)" msgid "Part Stock" msgstr "Stock de parte" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "Asignaciones de Stock de Parte" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "Plantillas de prueba de parte" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "Añadir Plantilla de Prueba" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "Asignaciones de órdenes de venta" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "Variantes de Parte" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "Crear nueva variante" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "Nueva Variante" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "Añadir nuevo parámetro" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "Partes relacionadas" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "Añadir Relacionado" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "Lista de Materiales" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "Exportar acciones" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Exportar BOM" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "Imprimir informe BOM" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "Subir BOM" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Copiar BOM" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "Validar BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "Nuevo Item en el BOM" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "Añadir artículo al BOM" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "Ensamblajes" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "Construcción de partes" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "Construir adjudicaciones de pedidos" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "Proveedores de piezas" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "Fabricantes de piezas" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "Eliminar partes del fabricante" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "¿Eliminar elementos BOM seleccionados?" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "Todos los elementos BOM seleccionados serán eliminados" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "Crear artículo para el BOM" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "Partes relacionadas" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "Añadir artículos relacionados" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "Añadir plantilla de resultados de prueba" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "Editar notas del artículo" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Precio de unidad de compra - %(currency)s" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Diferencia entre precio y costo unitario - %(currency)s" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Costo de Unidad de Proveedor - %(currency)s" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "Precio unitario - %(currency)s" @@ -4996,7 +5023,7 @@ msgstr "La pieza es virtual (no una pieza física)" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Inactivo" @@ -5031,8 +5058,8 @@ msgstr "Asignado a Pedidos" msgid "Can Build" msgstr "Puede construir" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "En construcción" @@ -5131,7 +5158,11 @@ msgstr "Usado en" msgid "Allocations" msgstr "Asignaciones" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "Plantillas de Prueba" @@ -5249,8 +5280,8 @@ msgid "Set category for the following parts" msgstr "Establecer categoría para las siguientes partes" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Sin Stock" @@ -5365,7 +5396,7 @@ msgstr "Crear plantilla Parámetro de Parte" msgid "Delete Part Parameter Template" msgstr "Eliminar Plantilla de Parámetros de Parte" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "Editar Categoría de Parte" @@ -5603,12 +5634,12 @@ msgid "Stock Item Test Report" msgstr "Artículo Stock Informe de prueba" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Número de serie" @@ -5617,19 +5648,19 @@ msgid "Test Results" msgstr "Resultados de la Prueba" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "Prueba" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "Resultado" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "Fecha" @@ -5647,8 +5678,8 @@ msgid "Installed Items" msgstr "Elementos instalados" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "Serial" @@ -5664,9 +5695,9 @@ msgstr "Debe suministrarse una pieza válida" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "Fecha de Expiración" @@ -5706,228 +5737,228 @@ msgstr "Confirmar desinstalación" msgid "Confirm removal of installed stock items" msgstr "Confirmar la eliminación de los artículos de stock instalados" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "Propietario" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "Seleccionar Propietario" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "Ya existe un Stock con este número de serie" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Tipo de pieza ('{pf}') debe ser {pe}" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "La cantidad debe ser 1 para el artículo con un número de serie" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "El objeto no puede pertenecer a sí mismo" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "El elemento debe tener una referencia de construcción si is_building=True" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "La referencia de la construcción no apunta al mismo objeto de parte" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "Artículo de stock padre" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "Parte base" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicación de Stock" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "¿Dónde se encuentra este artículo de stock?" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "Empaquetar este elemento de stock se almacena en" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "Instalado en" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "¿Está este elemento instalado en otro elemento?" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "Número de serie para este elemento" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "Código de lote para este artículo de stock" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "Cantidad de Stock" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "Build de origen" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "Build para este item de stock" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "Orden de compra de origen" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "Orden de compra para este artículo de stock" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "Orden de venta de destino" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "Eliminar al agotar" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "Eliminar este artículo de stock cuando se agoten las existencias" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "Notas del artículo de stock" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "Precio de compra único en el momento de la compra" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "La parte no está establecida como rastreable" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "Cantidad debe ser un entero" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "La cantidad no debe exceder la cantidad disponible de existencias ({n})" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "Los números de serie deben ser una lista de enteros" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "La cantidad no coincide con los números de serie" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Los números de serie ya existen: {exists}" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "Artículo de stock ha sido asignado a un pedido de venta" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "Artículo de stock está instalado en otro artículo" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "Artículo de stock contiene otros artículos" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "Artículo de stock ha sido asignado a un cliente" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "El artículo de stock está en producción" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "Stock serializado no puede ser combinado" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "Artículos de Stock Duplicados" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "Los artículos de stock deben referirse a la misma parte" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "Los artículos de stock deben referirse a la misma parte del proveedor" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "Los códigos de estado del stock deben coincidir" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stock no se puede mover porque no está en stock" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "Notas de entrada" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "Debe proporcionarse un valor para esta prueba" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "El archivo adjunto debe ser subido para esta prueba" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "Nombre del test" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "Resultado de la prueba" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "Valor de salida de prueba" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "Adjunto de resultados de prueba" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "Notas de prueba" @@ -6081,11 +6112,11 @@ msgstr "Añadir Datos de Prueba" msgid "Installed Stock Items" msgstr "Elementos de Stock instalados" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "Instalar elemento de stock" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "Añadir Resultado de Prueba" @@ -6210,7 +6241,7 @@ msgid "Stale" msgstr "Desactualizado" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "Última actualización" @@ -6247,7 +6278,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Este artículo de stock está serializado - tiene un número de serie único y la cantidad no se puede ajustar." #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Ubicación no establecida" @@ -6276,7 +6307,7 @@ msgstr "No estás en la lista de propietarios de este artículo. Este artículo msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "Editar Estado del Stock" @@ -6357,10 +6388,38 @@ msgstr "Acciones de impresión" msgid "Print labels" msgstr "Imprimir Etiquetas" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "¿Está seguro que desea eliminar esta ubicación?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "Cargando..." @@ -6442,7 +6501,7 @@ msgstr "Código QR de Item de Stock" msgid "Uninstall Stock Items" msgstr "Desinstalar artículos de stock" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "Confirmar ajuste de stock" @@ -6450,7 +6509,7 @@ msgstr "Confirmar ajuste de stock" msgid "Uninstalled stock items" msgstr "Artículos de stock desinstalados" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "Editar artículo de stock" @@ -6462,7 +6521,7 @@ msgstr "Crear nueva ubicación de stock" msgid "Create new Stock Item" msgstr "Crear nuevo artículo de stock" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "Duplicar artículo de stock" @@ -7059,60 +7118,60 @@ msgstr "%(time)s atrás" msgid "Do you really want to remove the selected email address?" msgstr "¿Realmente desea eliminar la dirección de correo electrónico seleccionada?" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "Configuración del Tema" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "Seleccionar tema" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "Establecer tema" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "Configuración de Idioma" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "Seleccionar idioma" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "%(lang_translated)s%% traducido" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "No hay traducciones disponibles" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "Definir Idioma" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "Algunos idiomas no están completos" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "Mostrar solo el contenido" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "y oculto." -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "Mostrar también" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "¡Ayuda a los esfuerzos de traducción!" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "La traducción nativa de la aplicación web de InvenTree es un aporte de la comunidad a través de crowdin. Las contribuciones son bienvenidas y alentadas." @@ -7419,8 +7478,8 @@ msgstr "Cantidad requerida" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponible" @@ -7612,7 +7671,7 @@ msgstr "Esto eliminará la asociación entre este artículo de stock y el códig msgid "Unlink" msgstr "Desvincular" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "Eliminar elemento de stock" @@ -7752,7 +7811,7 @@ msgstr "Editar sustitutos de elementos BOM" msgid "Substitutes Available" msgstr "Sustitutos Disponibles" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "Stock de variante permitido" @@ -7804,7 +7863,7 @@ msgstr "No se encontraron elementos BOM" msgid "Are you sure you want to delete this BOM item?" msgstr "¿Está seguro que desea eliminar este elemento BOM?" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "Parte requerida" @@ -7918,137 +7977,141 @@ msgstr "Ubicación no especificada" msgid "No active build outputs found" msgstr "No se encontraron salidas de trabajo activas" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Editar asignación de stock" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Eliminar asignación de stock" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "Editar Asignación" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "Quitar asignación" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "Piezas sustitutas disponibles" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "Cantidad por" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "Asignadas" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "Stock de Trabajo" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "Pedido de stock" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "Asignar stock" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Seleccionar partes" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "Debe seleccionar al menos una parte para asignar" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "Especificar la cantidad de asignación de stock" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleccionar ubicación de origen (dejar en blanco para tomar de todas las ubicaciones)" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Confirmar asignación de stock" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "Asignar Artículos de Stock a Orden de Trabajo" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "No hay ubicaciones de stock coincidentes" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "No hay artículos de stock coincidentes" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "No hay trabajos que coincidan con la consulta" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "Seleccionar" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "Orden de trabajo atrasada" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "No hay información de usuario" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "Sin información" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "No se asignaron partes para" @@ -8113,34 +8176,34 @@ msgid "No manufacturer parts found" msgstr "No se encontraron partes del fabricante" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "Plantilla de parte" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "Parte ensamblada" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "No se encontraron parámetros" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "Editar parámetro" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "Eliminar parámetro" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "Editar parámetro" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "Eliminar parámetro" @@ -8249,7 +8312,7 @@ msgid "NO" msgstr "NO" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "Seleccionar elementos de stock" @@ -8446,7 +8509,7 @@ msgstr "" msgid "Quantity to receive" msgstr "Cantidad a recibir" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "Estado del Stock" @@ -8470,7 +8533,7 @@ msgstr "Confirmar recepción de artículos" msgid "Receive Purchase Order Items" msgstr "Recibir artículos de orden de compra" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "No se encontraron órdenes de compra" @@ -8499,7 +8562,7 @@ msgid "Total" msgstr "Total" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "Precio Unitario" @@ -8508,11 +8571,11 @@ msgid "Total Price" msgstr "Precio Total" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "Recibir ítem de línea" @@ -8593,7 +8656,7 @@ msgid "Delete Stock Allocation" msgstr "Eliminar Adjudicación de Stock" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "Enviado al cliente" @@ -8633,237 +8696,245 @@ msgstr "Actualizar Precio Unitario" msgid "No matching line items" msgstr "No hay elementos de línea coincidentes" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Atributos de Parte" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "Opciones de Creación de Parte" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "Opciones de Duplicación de Parte" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "Opciones de Proveedor" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "Añadir Categoría de Parte" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "Crear Stock Inicial" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "Crear un elemento inicial de stock para esta parte" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "Cantidad Inicial de Stock" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "Especifique la cantidad inicial de stock para esta parte" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "Seleccionar ubicación de stock de destino" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "Copiar Parámetros de Categoría" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "Añadir Datos de Proveedor" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "Crear datos iniciales del proveedor para esta parte" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "Copiar Imagen" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "Copiar imagen desde la parte original" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "Copiar la factura de materiales de la parte original" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "Copiar Parámetros" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "Copiar datos del parámetro de la parte original" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "Categoría superior de parte" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "Editar Parte" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "Parte editada" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "Crear Variante de Parte" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "Estás suscrito a las notificaciones de este elemento" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "Te has suscrito a las notificaciones de este elemento" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "Suscríbete a las notificaciones de este elemento" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "Has cancelado la suscripción a las notificaciones de este elemento" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "Validar el BOM marcará cada elemento de línea como válido" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "Validar la Factura de Materiales" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "Validación de Lista de Materiales" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "Copiar Factura de Materiales" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "Parte Rastreable" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "Parte virtual" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "Parte suscrita" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "Pieza vendible" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "No se encontraron variantes" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "Eliminar relación de parte" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "Eliminar Relación de Parte" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "No se encontraron partes" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "Sin categoría" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "Stock bajo" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "Mostrar como lista" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "Mostrar como cuadrícula" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "Mostrar como árbol" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "Categoría suscrita" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "Ruta" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "No hay plantillas de prueba que coincidan con la consulta" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "Editar resultado de prueba" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "Eliminar resultado de prueba" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "Esta prueba está definida para una parte principal" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "Editar plantilla de resultado de prueba" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "Eliminar plantilla de resultados de prueba" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "No se encontró información de ${human_name}" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "Editar ${human_name}" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "Eliminar ${human_name}" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "Precio Único" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "Diferencia de Precio Único" @@ -8965,328 +9036,332 @@ msgstr "Introduzca la cantidad inicial para este artículo de stock" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Introduzca números de serie para el nuevo stock (o deje en blanco)" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "Crear nuevo artículo de stock" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "Creados varios artículos de stock" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "Encontrar número serial" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "Introducir número de serie" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "Introducir un número de serie" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "Ningún número de serie coincidente" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "Más de un resultado encontrado" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "Confirmar asignación de stock" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "Asignar Stock al Cliente" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "Advertencia: La operación de fusión no puede ser revertida" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "Alguna información se perderá al combinar artículos de stock" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "Se eliminará el historial de transacciones de stock para elementos fusionados" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "La información de la pieza del proveedor se eliminará para los artículos fusionados" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "Confirmar fusión de artículos de stock" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "Fusionar Artículos de Stock" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "Transferir Stock" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "Mover" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "Contar Stock" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "Contar" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "Eliminar Stock" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "Tomar" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Añadir Stock" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Añadir" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "Eliminar Stock" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La cantidad no se puede ajustar para el stock serializado" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "Especificar cantidad de stock" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "Debe seleccionar al menos un artículo de stock disponible" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "PASA" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "FALLO" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "SIN RESULTADO" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "Pruebas pasadas" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "Añadir resultado de prueba" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "No se encontraron resultados de prueba" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "Fecha de Prueba" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "Editar Resultados de Prueba" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "Borrar Resultado de Prueba" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "En producción" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "Instalado en el artículo de stock" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "Asignado a la Orden de Venta" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Ninguna ubicación de stock establecida" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "El artículo de stock está en producción" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "Artículo de stock asignado al pedido de venta" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "Artículo de stock asignado al cliente" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "Artículo de stock ha caducado" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "El artículo de stock caducará pronto" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "Se ha asignado un artículo de stock serializado" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "Artículo de stock ha sido completamente asignado" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "Artículo de stock ha sido asignado parcialmente" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "Artículo de stock ha sido instalado en otro artículo" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "Artículo de stock ha sido rechazado" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "Artículo de stock perdido" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "Artículo de stock destruido" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Agotado" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "Inventario" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "Parte del proveedor no especificada" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "No hay artículos de stock que coincidan con la consulta" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "elementos" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "lotes" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "ubicaciones" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "Ubicación indefinida" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "Establecer estado de stock" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "Seleccionar Código de Estado" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "Debe seleccionar el código de estado" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "Cantidad Asignada" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Detalles" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "Ubicación ya no existe" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "La orden de compra ya no existe" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "El cliente ya no existe" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "Artículo de stock ya no existe" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Añadido" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "Eliminado" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "Editar entrada de rastreo" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "Eliminar entrada de rastreo" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "Ningún elemento instalado" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "Desinstalar elemento de stock" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Los artículos de stock sólo pueden ser instalados si cumplen con los siguientes criterios" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "El artículo de stock está serializado y no pertenece a otro artículo" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 8ab8d2788f..10dfec73de 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -122,7 +122,7 @@ msgstr "Fichier manquant" msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Pièce jointe" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Lien" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Lien vers une url externe" @@ -152,11 +152,11 @@ msgstr "Commentaire" msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Utilisateur" @@ -193,17 +193,17 @@ msgstr "Erreur lors du renommage du fichier" msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Nom" @@ -212,7 +212,7 @@ msgstr "Nom" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Nom" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Description" @@ -240,7 +240,7 @@ msgstr "Description (facultative)" msgid "parent" msgstr "parent" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Doit être un nombre valide" @@ -501,7 +501,7 @@ msgstr "Séparer de l'élément parent" msgid "Split child item" msgstr "Fractionner l'élément enfant" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Articles de stock fusionnés" @@ -648,7 +648,7 @@ msgstr "Choix invalide pour la fabrication parente" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Ordre de Fabrication" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Référence" @@ -692,10 +692,10 @@ msgstr "BuildOrder associé a cette fabrication" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "BuildOrder associé a cette fabrication" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Pièce" @@ -733,8 +733,8 @@ msgstr "Bon de commande de référence" msgid "SalesOrder to which this build is allocated" msgstr "Commande de vente à laquelle cette construction est allouée" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Emplacement d'origine" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Code de statut de construction" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Code de lot" @@ -783,7 +783,7 @@ msgstr "Code de lot" msgid "Batch code for this build output" msgstr "Code de lot pour ce build output" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Date de création" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Date d'achèvement" @@ -805,7 +805,7 @@ msgstr "Date d'achèvement" msgid "completed by" msgstr "achevé par" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Émis par" @@ -816,9 +816,9 @@ msgstr "Utilisateur ayant émis cette commande de construction" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Responsable" @@ -829,7 +829,7 @@ msgstr "Utilisateur responsable de cette commande de construction" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Lien Externe" @@ -839,17 +839,17 @@ msgstr "Lien Externe" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Notes" @@ -869,69 +869,69 @@ msgstr "L'ordre de production a déjà été réalisé" msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "L'article de stock est suralloué" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "La quantité allouée doit être supérieure à zéro" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "La quantité doit être de 1 pour stock sérialisé" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Assemblage" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Construction à laquelle allouer des pièces" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Article en stock" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Stock d'origine de l'article" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Stock d'origine de l'article" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Quantité" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Stock de destination de l'article" @@ -998,7 +999,7 @@ msgstr "Entrer la quantité désiré pour la fabrication" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Numéros de série" @@ -1042,12 +1043,12 @@ msgstr "Une liste d'ordre de production doit être fourni" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Emplacement" @@ -1058,10 +1059,10 @@ msgstr "Emplacement des ordres de production achevés" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "État" @@ -1097,8 +1098,8 @@ msgstr "L'ordre de production a des sorties incomplètes" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Date Cible" @@ -1250,7 +1259,7 @@ msgstr "En retard" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Terminé" @@ -1262,7 +1271,7 @@ msgstr "Terminé" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Commandes" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Émis par" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Sorties incomplètes" @@ -1311,7 +1321,7 @@ msgstr "Pièces allouées" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Créé le" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Désallouer le stock" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Pieces jointes" @@ -1441,27 +1451,27 @@ msgstr "Pieces jointes" msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Modifier les notes" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Allocation terminée" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Nouvel ordre de construction" @@ -1485,13 +1495,9 @@ msgstr "Affichage en liste" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "Articles en attente" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" -msgstr "Articles terminés" +msgid "Completed Outputs" +msgstr "" #: build/views.py:73 msgid "Build was cancelled" @@ -1538,760 +1544,768 @@ msgstr "{name.title()} Fichier" msgid "Select {name} file to upload" msgstr "Sélectionner le fichier {name} à uploader" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "Un paramètre a été modifié, ce qui nécessite un redémarrage du serveur" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "Nom de l'instance InvenTree" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "URL de base" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Devises par défaut" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Activer le support du scanner de code-barres" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Copier les données de test par défaut lors de la duplication d'une pièce" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Template" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Composant" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Vendable" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Traçable" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Afficher le prix dans les formulaires" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Afficher le prix de la pièce dans certains formulaires" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "Afficher le prix dans la BOM" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "Inclure les informations de prix dans les tableaux de la BOM" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "Créer un stock initial" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "Créer le stock initial lors de la création d'une pièce" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Rapports de test" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "jours" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Préfixe des commandes d'achats" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "Email requis" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "Actif" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "Point de contact" msgid "Link to external company information" msgstr "Lien externe vers les informations de l'entreprise" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Image" @@ -2500,7 +2514,7 @@ msgstr "Devise" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Fabricant" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Sélectionner un fabricant" @@ -2528,11 +2542,11 @@ msgstr "Sélectionner un fabricant" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Valeur" @@ -2566,10 +2580,10 @@ msgstr "Valeur" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Fournisseur" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "coût de base" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Télécharger l'image depuis l'URL" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Nouvelle commande achat" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Nouvelle commande de vente" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Stock affecté" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "Fabricants" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Fournisseurs" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Supprimer les pièces du fournisseur" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Supprimer" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Paramètres" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Stock" @@ -3056,7 +3070,7 @@ msgstr "Tarif" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Éléments en stock" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "Commande" @@ -3328,8 +3342,8 @@ msgstr "Commande" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Commande d’achat" @@ -3339,7 +3353,7 @@ msgstr "Pièce fournisseur" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "Reçu" @@ -3348,9 +3362,9 @@ msgstr "Reçu" msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Prix d'achat" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Statut de la commande" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Supprimer la ligne" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "Les prochains numéros de série disponibles sont" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "Le prochain numéro de série disponible est" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "Le numéro de série le plus récent est" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Catégorie" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Révision" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "Ventes multiples" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Requis" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "Données" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "Tester le modèle" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Numéro de série" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "Sélectionner un propriétaire" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "Il existe déjà un article en stock avec ce numéro de série" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "La quantité doit être de 1 pour un article avec un numéro de série" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Le numéro de série ne peut pas être défini si la quantité est supérieure à 1" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "Les numéros de série doivent être une liste de nombres entiers" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Les numéros de série existent déja : {exists}" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Cet article de stock est sérialisé - il a un numéro de série unique et la quantité ne peut pas être ajustée." #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponible" @@ -7607,7 +7666,7 @@ msgstr "Ceci supprimera l'association entre cet article de stock et le code-barr msgid "Unlink" msgstr "Délier" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "Supprimer l'article de stock" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "Livré au client" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Attributs de la pièce" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "Options de création de pièce" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "Options de duplication de pièces" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "Options de fournisseur" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "Ajouter une catégorie de pièce" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "Créer un stock initial" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "Copier l'image" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "Copier les paramètres" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "Modifier la pièce" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "Pièce modifiée" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "Créer une variante de pièce" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "Pièce traçable" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "Pièce virtuelle" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "Pièce vendable" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "Aucune pièce trouvée" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "Aucune catégorie" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "Stock bas" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "Afficher sous forme de liste" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "Afficher sous forme de grille" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "Afficher sous forme d'arborescence" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "Chemin d'accès" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "Modifier le résultat du test" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "Supprimer le résultat du test" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "Trouver un numéro de série" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "Entrer le numéro de série" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "Entrer un numéro de série" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "Aucun numéro de série correspondant" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "Plus d'un résultat correspondant trouvé" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "Confirmer l'assignation de stock" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "Assigner le stock au client" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "Attention : l'opération de fusion est irréversible" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "Certaines informations seront perdues lors de la fusion des articles en stock" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "Confirmer la fusion de l'article en stock" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "Fusionner les articles en stock" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "Transférer le stock" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "Transférer" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "Compter le stock" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "Compter" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "Supprimer du stock" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "Supprimer" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Ajouter du stock" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Ajouter" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "Supprimer le stock" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "Spécifiez la quantité du stock" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "Vous devez sélectionner au moins un article en stock disponible" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "RÉUSSI" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "ÉCHEC" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "AUCUN RÉSULTAT" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "Ajouter un résultat de test" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "Aucun résultat de test trouvé" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "Date du test" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "En production" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "Article en stock installé dans un autre article en stock" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "Assigné à une commande de vente" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Aucun emplacement de stock défini" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "L'article de stock est en production" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "L'article en stock a été assigné à une commande de vente" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "L'article en stock a été assigné à un client" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "L'article en stock a expiré" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "L'article en stock va bientôt expirer" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "L'article de stock sérialisé a été alloué" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "L'article de stock a été complètement alloué" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "L'article de stock a été partiellement alloué" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "L'article en stock a été installé dans un autre article" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "L'article de stock a été rejeté" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "L'article de stock est perdu" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "L'article de stock est détruit" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Epuisé" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "Prise d'inventaire" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "Pièce de fournisseur non précisée" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "Aucun article de stock ne correspond à la requête" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "articles" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "lots" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "emplacements" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "Emplacement indéfini" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "Définir l'état du stock" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "Sélectionner le code de statut" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "Le code de statut doit être sélectionné" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "Quantité Allouée" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Détails" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "L'emplacement n'existe plus" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "La commande d'achat n'existe plus" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "Le client n'existe plus" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "L'article de stock n'existe plus" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Ajouté" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "Supprimé" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index 5bdc83d009..3676c45bb9 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -122,7 +122,7 @@ msgstr "קובץ חסר" msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "קובץ מצורף" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "בחר קובץ לצירוף" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "קישור" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "קישור חיצוני" @@ -152,11 +152,11 @@ msgstr "הערה" msgid "File comment" msgstr "הערת קובץ" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "משתמש" @@ -193,17 +193,17 @@ msgstr "שגיאה בשינוי שם פריט" msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "שם" @@ -212,7 +212,7 @@ msgstr "שם" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "שם" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "תיאור" @@ -240,7 +240,7 @@ msgstr "תיאור (לא חובה)" msgid "parent" msgstr "מקור" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "מקט" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "רכיב" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "כמות" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "מספרים סידוריים" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 37d19612f9..b5d5306a07 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 13:02\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -122,7 +122,7 @@ msgstr "Hiányzó fájl" msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Melléklet" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Válaszd ki a mellekelni kívánt fájlt" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Link" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Link külső URL-re" @@ -152,11 +152,11 @@ msgstr "Megjegyzés" msgid "File comment" msgstr "Fájl megjegyzés" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Felhasználó" @@ -193,17 +193,17 @@ msgstr "Hiba a fájl átnevezésekor" msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Név" @@ -212,7 +212,7 @@ msgstr "Név" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Név" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Leírás" @@ -240,7 +240,7 @@ msgstr "Leírás (opcionális)" msgid "parent" msgstr "szülő" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" @@ -501,7 +501,7 @@ msgstr "Szülő tételből szétválasztva" msgid "Split child item" msgstr "Szétválasztott gyermek tétel" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Összevont készlet tétel" @@ -648,7 +648,7 @@ msgstr "Hibás választás a szülő gyártásra" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Gyártási utasítás" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Azonosító" @@ -692,10 +692,10 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Alkatrész" @@ -733,8 +733,8 @@ msgstr "Vevői rendelés azonosító" msgid "SalesOrder to which this build is allocated" msgstr "Vevői rendelés amihez ez a gyártás hozzá van rendelve" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Forrás hely" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Gyártás státusz kód" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Batch kód" @@ -783,7 +783,7 @@ msgstr "Batch kód" msgid "Batch code for this build output" msgstr "Batch kód a gyártás kimenetéhez" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Létrehozás dátuma" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Cél dátum a gyártás befejezéséhez. Ez után késettnek számít majd." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Elkészítés dátuma" @@ -805,7 +805,7 @@ msgstr "Elkészítés dátuma" msgid "completed by" msgstr "elkészítette" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Kiállította" @@ -816,9 +816,9 @@ msgstr "Felhasználó aki ezt a gyártási utasítást kiállította" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Felelős" @@ -829,7 +829,7 @@ msgstr "Felhasználó aki felelős ezért a gyártási utasításért" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Külső link" @@ -839,17 +839,17 @@ msgstr "Külső link" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Megjegyzések" @@ -869,69 +869,69 @@ msgstr "Gyártási kimenet már kész" msgid "Build output does not match Build Order" msgstr "Gyártási kimenet nem egyezik a gyártási utasítással" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Lefoglalt mennyiség ({q}) nem lépheti túl a készletet ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "Készlet túlfoglalva" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Kiválasztott készlet tétel nem található az alkatrészjegyzékben" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Gyártás" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Gyártás amihez készletet foglaljunk" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Készlet tétel" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Forrás készlet tétel" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Forrás készlet tétel" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Cél készlet tétel" @@ -998,7 +999,7 @@ msgstr "Add meg a mennyiséget a gyártás kimenetéhez" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" @@ -1013,7 +1014,7 @@ msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyed #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Sorozatszámok" @@ -1042,12 +1043,12 @@ msgstr "A gyártási kimenetek listáját meg kell adni" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Hely" @@ -1058,10 +1059,10 @@ msgstr "A kész gyártási kimenetek helye" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Állapot" @@ -1097,8 +1098,8 @@ msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz" msgid "No build outputs have been created for this build order" msgstr "Ehhez a gyártási utasításhoz nem készült kimenet" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "Alkatrészjegyzék tétel" @@ -1135,23 +1136,31 @@ msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatr msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "Készlet hely ahonnan az alkatrészek származnak (hagyd üresen ha bárhonnan)" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "Hely kizárása" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "Készlet tételek kizárása erről a kiválasztott helyről" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "Felcserélhető készlet" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "A különböző helyeken lévő készlet egyenrangúan felhasználható" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "Készlet helyettesítés" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "Helyettesítő alkatrészek foglalásának engedélyezése" @@ -1226,9 +1235,9 @@ msgstr "A készlet nem lett teljesen lefoglalva ehhez a gyártási utasításhoz #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Cél dátum" @@ -1250,7 +1259,7 @@ msgstr "Megkésett" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Kész" @@ -1262,7 +1271,7 @@ msgstr "Kész" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Vevői rendelés" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Kiállította" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Befejezetlen kimenetek" @@ -1311,7 +1321,7 @@ msgstr "Lefoglalt alkatrészek" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Batch" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Létrehozva" @@ -1340,7 +1350,7 @@ msgstr "Alárendelt gyártások" msgid "Allocate Stock to Build" msgstr "Készlet foglalása gyártáshoz" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Készlet felszabadítása" @@ -1431,8 +1441,8 @@ msgstr "Befejezett gyártási kimenetek" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Mellékletek" @@ -1441,27 +1451,27 @@ msgstr "Mellékletek" msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Megjegyzések szerkesztése" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "Az összes nem követett készlet lefoglalásra került" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Új gyártási utasítás" @@ -1485,13 +1495,9 @@ msgstr "Lista nézet megjenítése" msgid "Build Order Details" msgstr "Gyártási utasítás részletei" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "Függőben lévő tételek" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" -msgstr "Kész tételek" +msgid "Completed Outputs" +msgstr "Befejezett kimenetek" #: build/views.py:73 msgid "Build was cancelled" @@ -1538,760 +1544,768 @@ msgstr "{name.title()} Fájl" msgid "Select {name} file to upload" msgstr "{name} fájl kiválasztása feltöltéshez" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny)" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "Egy olyan beállítás megváltozott ami a kiszolgáló újraindítását igényli" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "InvenTree példány neve" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Cég neve" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Letöltés URL-ről" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Vonalkód olvasó engedélyezése" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrész esetén is" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "IPN megváltoztatásánsak engedélyezése az alkatrész szerkesztése közben" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "Alkatrész másoláskor az alkatrészjegyzék adatokat is másoljuk alapból" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "Alkatrész másoláskor a paramétereket is másoljuk alapból" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Alkatrész másoláskor a tesztek adatait is másoljuk alapból" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Kategória paraméter sablonok másolása alkatrész létrehozásakor" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Sablon" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Gyártmány" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Alkatrészeket alapból lehessen gyártani másik alkatrészekből" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Összetevő" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Alkatrészek alapból használhatók összetevőként más alkatrészekhez" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Követésre kötelezett" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuális" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Import segéd megjelenítése néhány alkatrész nézetben" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Ár megjelenítése a formokon" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Alkatrész árak megjelenítése néhány formon" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "Ár megjelenítése az alkatrészjegyzékben" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "Árinformációk megjelenítése az alkatrészjegyzék táblákban" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "Ártörténet megjelenítése" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "Alkatrész ártörténet megjelenítése" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "Kezdeti készlet létrehozása" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "Kezdeti készlet megadása az alkatrész létrehozásakor" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "Belső ár alkatrészjegyzék árként" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Belső ár használata (ha van) az alkatrészjegyzék árszámításában" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "Riportok előállítása HTML formátumban (hibakereséshez)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Teszt riportok" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "Lejárt készlet értékesítésének engedélyezése" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "Napok száma amennyivel a lejárat előtt a készlet tételeket állottnak vesszük" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "nap" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "Gyártás engedélyezése lejárt készletből" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "Tuajdonosok kezelésének engedélyezése a készlet helyekre és tételekre" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "Gyártási utasítás azonosító előtagja" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "Előtag értéke a gyártási utasítás azonosítóhoz" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "Gyártási utasítás azonosító reguláris kifejezés" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "Gyártási utasítás azonosítóra illeszkedő reguláris kifejezés" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "Vevői rendelés azonosító előtagja" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "Előtag értéke a vevői rendelés azonosítóhoz" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Beszerzési rendelés azonosító előtagja" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "Előtag értéke a beszerzési rendelés azonosítóhoz" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése a bejelentkező oldalon" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "Felhasználó adatainak automatikus kitöltése az SSO fiókadatokból" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "Regisztráláskor kétszer kérdezze a felhasználó email címét" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "Regisztráláskor kétszer kérdezze a felhasználó jelszavát" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "URL útvonalalak hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "Háttérben futó feladatok hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "Belső eseményekre reagálás engedélyezése a pluginok számára" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "Alkatrész kategória értesítések megjelenítése a főoldalon" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "Legfrissebb alkatrész szám" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "Főoldalon megjelenítendő legújabb alkatrészek" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "Jóváhagyásra váró alkatrészjegyzékek megjelenítése a főoldalon" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "Legutóbb megváltozott alkatrészek megjelenítése a főoldalon" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "Legfrissebb készlet mennyiség" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "Főoldalon megjelenítendő legújabb készlet tételek száma" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "Szükséges készlet megjelenítése" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "Gyártáshoz szükséges készletek megjelenítése a főoldalon" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "Megkésett gyártások megjelenítése" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "Megkésett gyártások megjelenítése a főoldalon" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "Megkésett megrendelések megjelenítése" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "Megkésett megrendelések megjelenítése a főoldalon" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "Kintlévő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "Megkésett vevői rendelések megjelenítése" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "Megkésett vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF címkék megjelenítése a böngészőben letöltés helyett" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF riport megjelenítése a böngészőben letöltés helyett" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "A keresési előnézetben megjelenítendő eredmények száma" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "Készlet keresés" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "Készlet mennyiség megjelenítése a keresési előnézetben" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "Inaktív alkatrészek elrejtése a kereső előnézeti ablakban" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "Rendelkezésre álló alkatrész mennyiség megjelenítése néhány formon" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "ESC billentyű használata a modális formok bezárásához" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "InvenTree menü pozíciója mindig rögzítve legyen a lap tetején" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "Alkatrész ütemezés" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "Alkatrész ütemezési információk megjelenítése" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "Árlépcső mennyiség" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Ár" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "Webhook neve" msgid "Active" msgstr "Aktív" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "Token" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "Titok" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "Fejléc" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "Törzs" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" @@ -2463,7 +2477,7 @@ msgstr "Kapcsolattartó" msgid "Link to external company information" msgstr "Link a külső céginformációhoz" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Kép" @@ -2500,7 +2514,7 @@ msgstr "Pénznem" msgid "Default currency used for this company" msgstr "Cég által használt alapértelmezett pénznem" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Kiindulási alkatrész" @@ -2515,12 +2529,12 @@ msgstr "Válassz alkatrészt" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Gyártó" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Gyártó kiválasztása" @@ -2528,11 +2542,11 @@ msgstr "Gyártó kiválasztása" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Gyártói alkatrész azonosító" @@ -2557,8 +2571,8 @@ msgstr "Paraméter neve" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Érték" @@ -2566,10 +2580,10 @@ msgstr "Érték" msgid "Parameter value" msgstr "Paraméter értéke" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "Mértékegységek" @@ -2588,22 +2602,22 @@ msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészr #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Beszállító" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Beszállító kiválasztása" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "Beszállítói alkatrész azonosító" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Megjegyzés" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "alap költség" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Csomagolás" @@ -2644,7 +2658,7 @@ msgstr "Csomagolás" msgid "Part packaging" msgstr "Alkatrész csomagolás" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "többszörös" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Kép letöltése URL-ről" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Vevő" @@ -2739,7 +2753,7 @@ msgstr "Új beszállítói alkatrész létrehozása" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Új beszállítói alkatrész" @@ -2747,8 +2761,8 @@ msgstr "Új beszállítói alkatrész" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Opciók" @@ -2776,7 +2790,7 @@ msgstr "Gyártói alkatrészek" msgid "Create new manufacturer part" msgstr "Új gyártói alkatrész létrehozása" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Új gyártói alkatrész" @@ -2790,7 +2804,7 @@ msgstr "Beszállítói készlet" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Új beszerzési rendelés" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Új vevői rendelés" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Hozzárendelt készlet" @@ -2840,13 +2854,13 @@ msgstr "Cég megjegyzések" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "Töröljük a beszállítói alkatrészeket?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz" @@ -2863,7 +2877,7 @@ msgstr "Gyártók" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Alkatrész rendelés" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Beszállítók" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Beszállítói alkatrész törlése" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Törlés" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Paraméterek" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "Paraméterek törlése" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "Paraméter hozzáadása" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "Hozzárendelt készlet tételek" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "Beszállítói alkatrész" @@ -2979,7 +2993,7 @@ msgstr "Új készlet tétel létrehozása" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "Új készlet tétel" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "Beszállítói alkatrész rendelések" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "Alkatrész rendelése" @@ -3030,10 +3044,10 @@ msgstr "Árlépcső törlése" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Készlet" @@ -3056,7 +3070,7 @@ msgstr "Árazás" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Készlet tételek" @@ -3264,11 +3278,11 @@ msgstr "Cég akinek a tételek értékesítésre kerülnek" #: order/models.py:581 msgid "Customer Reference " -msgstr "Vevő azonosító " +msgstr "Vevői azonosító " #: order/models.py:581 msgid "Customer order reference code" -msgstr "Vevő megrendelés azonosító kód" +msgstr "Megrendelés azonosító kódja a vevőnél" #: order/models.py:586 msgid "Target date for order completion. Order will be overdue after this date." @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "Rendelés" @@ -3328,8 +3342,8 @@ msgstr "Rendelés" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Beszerzési rendelés" @@ -3339,7 +3353,7 @@ msgstr "Beszállítói alkatrész" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "Beérkezett" @@ -3348,9 +3362,9 @@ msgstr "Beérkezett" msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Beszerzési ár" @@ -3606,7 +3620,7 @@ msgstr "Rendelés leírása" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Rendelés állapota" @@ -3679,9 +3693,9 @@ msgstr "Beszállítói alkatrész kiválasztása" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Sor törlése" @@ -3824,7 +3838,7 @@ msgstr "Ehhez a vevői rendeléshez nincs minden alkatrész lefoglalva" #: order/templates/order/sales_order_base.html:122 #: templates/js/translated/order.js:1449 msgid "Customer Reference" -msgstr "Vevő azonosító" +msgstr "Vevői azonosító" #: order/templates/order/sales_order_base.html:140 #: order/templates/order/sales_order_detail.html:78 @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "Függő szállítmányok" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "Műveletek" @@ -3930,35 +3944,51 @@ msgstr "A {part} egységára {price}-ra módosítva" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "Beérkező beszerzési rendelés" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "Kimenő vevői rendelés" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "Gyártással előállított készlet" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "A gyártási utasításhoz szükséges készlet" + +#: part/api.py:641 msgid "Valid" msgstr "Érvényes" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "Nullánál nagyobb kell legyen" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "Érvényes mennyiségnek kell lennie" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "Hely megadása a kezdeti alkarész készlethez" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "Ez a mező kötelező" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Alapértelmezett hely" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "Elérhető készlet" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "Beszállítás alatt" @@ -3992,448 +4022,448 @@ msgstr "Paraméter sablon hozzáadása az összes kategóriához" msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Ebben a kategóriában lévő alkatrészek helye alapban" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "Alapértelmezett kulcsszavak" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "Alkatrész kategóriák" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Alkatrészek" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "Hibás választás a szülő alkatrészre" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "A '{p1}' alkatrész a '{p2}' alkatrészjegyzékében már szerepel (rekurzív)" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "A következő szabad sorozatszámok" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "A következő szabad sorozatszám" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "A legutóbbi sorozatszám" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "Azonos IPN nem engedélyezett az alkatrész beállításokban" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Alkatrész neve" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "Sablon-e" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "Ez egy sablon alkatrész?" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "Ez az alkatrész egy másik változata?" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" -msgstr "Változata ennek" +msgstr "Ebből a sablonból" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Alkatrész leírása" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Kulcsszavak" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Kategória" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "Alkatrész kategória" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "Belső alkatrész azonosító" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" -msgstr "Alkatrész változat vagy verziószám" +msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Változat" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "Alapban hol tároljuk ezt az alkatrészt?" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "Alapértelmezett beszállítói alkatrész" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "Alapértelmezett lejárat" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "Lejárati idő (napban) ennek az alkatrésznek a készleteire" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimális készlet" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "Minimálisan megengedett készlet mennyiség" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "Az alkatrész raktározási mértékegységei" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "Gyártható-e ez az alkatrész más alkatrészekből?" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "Aktív-e ez az alkatrész?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "Alkatrész megjegyzései - támogatja a Markdown formázást" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "Alkatrészjegyzék ellenőrző összeg" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "Tárolt alkatrészjegyzék ellenőrző összeg" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "Alkatrészjegyzéket ellenőrizte" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "Alkatrészjegyzék ellenőrzési dátuma" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "Létrehozó" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "Több értékesítése" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "Erre az alkatrészre már létezik teszt ilyen névvel" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Kötelező" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "Érvénytelen karakter ({c}) a sablon nevében" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "Paraméter mértékegysége" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "Adat" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "Alkatrész azonosító vagy alkatrész név" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "Alkatrész azonosító" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "Egyedi alkatrész azonosító érték" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "Alkatrész neve" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "Szint" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "Opcionális" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "Örökölt" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "Változatok engedélyezése" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "1.rész" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "2.rész" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "Hiba a kapcsolat létrehozása közben: ellenőrizd hogy az alkatrész nem kapcsolódik-e saját magához és azt hogy a kapcsolat egyedi" @@ -4532,7 +4562,7 @@ msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzéket utoljár msgid "The BOM for %(part)s has not been validated." msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzék még nincs jóváhagyva." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "Alkatrészjegyzék műveletek" @@ -4641,46 +4671,43 @@ msgstr "Új alkatrész létrehozása ez után" msgid "Part created successfully" msgstr "Alkatrész sikeresen létrehozva" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "Biztos hogy törölni szeretnél kategóriát" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "Ez a kategória %(count)s alkategóriát tartalmaz" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "Ha törlöd ezt a kategóriát az alkategóriák át lesznek mozgatva a" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "kategória" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" -msgstr "legfelső szintű alkatrész kategória" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" +msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "Ez a kategória %(count)s alkatrészt tartalmaz" +msgid "If this category is deleted, these parts will be moved to %(category)s" +msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "Ha ez a kategória törölve lesz, ezek az alkatrészek a szülő kategóriába %(path)s mozognak" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" -msgstr "Ha ez a kategória törölve lesz, ezek az alkatrészek a legfelső kategóriába mozognak" +msgid "If this category is deleted, these parts will be moved to the top level part category" +msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "Alkatrészek importálása" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "Alkatrész másolása" @@ -4708,150 +4735,150 @@ msgstr "%(full_name)s - %(desc)s (%(match_per)s%% egyezik)" msgid "Part Stock" msgstr "Alkatrész készlet" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "Alkatrész készlet foglalások" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "Alkatrész teszt sablonok" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "Teszt sablon hozzáadása" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "Vevői rendeléshez foglalások" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "Alkatrész változatok" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "Új változat létrehozása" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "Új változat" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "Paraméter hozzáadása" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "Kapcsolódó alkatrészek" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "Kapcsolódó hozzáadása" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "Alkatrészjegyzék" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "Exportálási műveletek" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "Alkatrészjegyzék exportálása" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "Alkatrészjegyzék riport nyomtatása" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "Alkatrészjegyzék feltöltése" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Alkatrészjegyzék másolása" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "Alkatrészjegyzék jóváhagyása" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "Új alkatrészjegyzék tétel" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "Alkatrészjegyzék tétel hozzáadása" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "Gyártmányok" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "Alkatrész gyártások" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "Gyártáshoz foglalások" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "Alkatrész beszállítók" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "Alkatrész gyártók" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "Gyártói alkatrészek törlése" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "Alkatrészjegyzék tétel létrehozása" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "Kapcsolódó alkatrész" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "Kapcsolódó alkatrész hozzáadása" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "Teszt eredmény sablon hozzáadása" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "Alkatrész megjegyzések szerkesztése" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "Beszerzési egységár - %(currency)s" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "Egységár-önköltség különbség - %(currency)s" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "Beszállítói egység költség - %(currency)s" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "Egységár - %(currency)s" @@ -4996,7 +5023,7 @@ msgstr "Virtuális (nem kézzelfogható alkatrész)" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Inaktív" @@ -5031,8 +5058,8 @@ msgstr "Lefoglalva összesen" msgid "Can Build" msgstr "Gyártható" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "Gyártásban" @@ -5131,7 +5158,11 @@ msgstr "Felhasználva ebben" msgid "Allocations" msgstr "Foglalások" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "Ütemezés" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "Teszt sablonok" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "Állítsd be a következő alkatrészek kategóriáját" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Nincs készlet" @@ -5363,7 +5394,7 @@ msgstr "Alkatrész paraméter sablon módosítása" msgid "Delete Part Parameter Template" msgstr "Alkatrész paraméter sablon törlése" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "Alkatrész kategória szerkesztése" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "Készlet tétel teszt riport" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Sorozatszám" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "Eredmény" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "Dátum" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "Beépített tételek" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "Sorozatszám" @@ -5662,9 +5693,9 @@ msgstr "Egy érvényes alkatrészt meg kell adni" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "Lejárati dátum" @@ -5704,228 +5735,228 @@ msgstr "Kiszedés megerősítése" msgid "Confirm removal of installed stock items" msgstr "Beépített készlet tételek eltávolításának megerősítése" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "Tulajdonos" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "Tulajdonos kiválasztása" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "Létezik már készlet tétel ilyen a sorozatszámmal" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "A alkatrész típus ('{pf}') {pe} kell legyen" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "Mennyiség 1 kell legyen a sorozatszámmal rendelkező tételnél" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Nem lehet sorozatszámot megadni ha a mennyiség több mint egy" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "A tétel nem tartozhat saját magához" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "A tételnek kell legyen gyártási azonosítója ha az is_bulding igaz" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "Gyártási azonosító nem ugyanarra az alkatrész objektumra mutat" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "Szülő készlet tétel" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "Kiindulási alkatrész" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételhez" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Készlet hely" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "A csomagolása ennek a készlet tételnek itt van tárolva" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "Beépítve ebbe" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "Ez a tétel be van építve egy másik tételbe?" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "Készlet mennyiség" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "Forrás gyártás" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "Gyártás ehhez a készlet tételhez" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "Forrás beszerzési rendelés" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "Beszerzés ehhez a készlet tételhez" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "Cél vevői rendelés" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Készlet tétel lejárati dátuma. A készlet lejártnak tekinthető ezután a dátum után" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "Törlés ha kimerül" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "Készlet tétel megjegyzések" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "Egy egység beszerzési ára a beszerzés időpontjában" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "A mennyiség nem lépheti túl a készletet ({n})" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Ezek a sorozatszámok már léteznek: {exists}" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "Készlet tétel nem mozgatható mivel nincs készleten" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "Teszt neve" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "Tesztek megjegyzései" @@ -6079,11 +6110,11 @@ msgstr "Teszt adatok hozzáadása" msgid "Installed Stock Items" msgstr "Beépített készlet tételek" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "Állott" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "Utoljára módosítva" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Ez a készlet tétel egyedi követésre kötelezett - egyedi sorozatszámmal rendelkezik így a mennyiség nem módosítható." #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Nincs beállítva hely" @@ -6274,7 +6305,7 @@ msgstr "Úgytűnik nem vagy ennek a tételnek a tulajdonosa. Ezt így nem tudod msgid "Read only" msgstr "Csak olvasható" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "Készlet állapot szerkesztése" @@ -6355,10 +6386,38 @@ msgstr "Nyomtatási műveletek" msgid "Print labels" msgstr "Címke nyomtatása" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "Biztosan törölni szeretnéd ezt a készlet helyet?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "Betöltés..." @@ -6440,7 +6499,7 @@ msgstr "Készlet tétel QR kódja" msgid "Uninstall Stock Items" msgstr "Készlet tétel kiszedése" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "Készlet módosítás jóváhagyása" @@ -6448,7 +6507,7 @@ msgstr "Készlet módosítás jóváhagyása" msgid "Uninstalled stock items" msgstr "Kiszedett készlet tételek" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "Készlet tétel szerkesztése" @@ -6460,7 +6519,7 @@ msgstr "Új készlet hely létrehozása" msgid "Create new Stock Item" msgstr "Új készlet tétel létrehozása" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "Készlet tétel másolása" @@ -7057,60 +7116,60 @@ msgstr "%(time)s óta" msgid "Do you really want to remove the selected email address?" msgstr "Biztosan törölni szeretnéd a kiválasztott email címet?" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "Téma beállítások" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "Téma választása" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "Téma beállítása" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "Nyelvi beállítások" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "Nyelv kiválasztása" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "%(lang_translated)s%%-ban lefordítva" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "Nem áll rendelkezésre fordítás" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "Nyelv beállítása" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "Néhány nyelv nem teljes" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "Csak a szükséges megjelenítése" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "és rejtett." -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "Mutasd őket is" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "Segítsd a fordítási munkát!" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "A nyelvi fordításai az InvenTree web alkalmazásnak közösségiek a crowdin-en. A közreműködéseket szívesen fogadjuk és bátorítjuk." @@ -7414,8 +7473,8 @@ msgstr "Szükséges mennyiség" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Elérhető" @@ -7607,7 +7666,7 @@ msgstr "Ez törli az összerendelést a készlet tétel és a vonalkód között msgid "Unlink" msgstr "Leválasztás" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "Készlet tétel törlése" @@ -7747,7 +7806,7 @@ msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése" msgid "Substitutes Available" msgstr "Vannak helyettesítők" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "Készletváltozatok engedélyezve" @@ -7799,7 +7858,7 @@ msgstr "Nem találhatók alkatrészjegyzék tételek" msgid "Are you sure you want to delete this BOM item?" msgstr "Biztos törölni akarod ezt az alkatrészjegyzék tételt?" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "Szükséges alkatrész" @@ -7913,137 +7972,141 @@ msgstr "Hely nincs megadva" msgid "No active build outputs found" msgstr "Nem található aktív gyártási kimenet" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Készlet foglalások törlése" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "Foglalás szerkesztése" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "Foglalás törlése" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "Vannak helyettesítő alkatrészek" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "Mennyiség per" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "Lefoglalva" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "betöltés" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "Gyártási készlet" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "Készlet rendelés" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "Lefoglalt készlet" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Kiválasztott alkatrészek" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "Legalább egy alkatrész választása szükséges a foglaláshoz" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "Minden alkatrész lefoglalva" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "Minden kiválasztott alkatrész teljesen lefoglalva" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "Válassz forrás helyet (vagy hagyd üresen ha bárhonnan)" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Készlet foglalás megerősítése" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "Készlet foglalása a gyártási utasításhoz" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "Nincs egyező készlethely" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "Nincs egyező készlet" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "Automatikus készlet foglalás" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "A készlet automatikusan lefoglalásra került ehhez a gyártási utasításhoz, a megadott feltételek szerint" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "Ha egy készlet hely meg van adva, akkor készlet csak arról a helyről lesz foglalva" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "Ha a készlet helyettesíthetőnek minősül, akkor az első rendelkezésre álló helyről lesz lefoglalva" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Ha a helyettesítő készlet engedélyezve van, akkor ott az lesz használva ha az elsődleges alkatrésznek nincs készlete" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "Készlet tételek foglalása" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "Kiválaszt" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "Gyártási utasítás megkésett" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "Nincs felhasználói információ" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "Nincs információ" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "Nincs lefoglalt alkatrész ehhez" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "Nincs gyártói alkatrész" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "Sablon alkatrész" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "Gyártmány alkatrész" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "Nem található paraméter" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "Paraméter törlése" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "Paraméter törlése" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "NEM" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "Készlet tételek kiválasztása" @@ -8441,7 +8504,7 @@ msgstr "Sorozatszám hozzáadása" msgid "Quantity to receive" msgstr "Érkező mennyiség" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "Készlet állapota" @@ -8465,7 +8528,7 @@ msgstr "Bevételezés megerősítése" msgid "Receive Purchase Order Items" msgstr "Beszerzési rendelés tételeinek bevételezése" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "Nem található beszerzési rendelés" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "Összesen" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "Egységár" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "Teljes ár" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "Ez a sortétel megkésett" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "Sortétel bevételezése" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "Készlet foglalások törlése" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "Vevőnek kiszállítva" @@ -8628,237 +8691,245 @@ msgstr "Egységár módosítása" msgid "No matching line items" msgstr "Nincs egyező sortétel" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Alkatrész tulajdonságok" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "Alkatrész létrehozási opciók" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "Alkatrész másolási opciók" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "Beszállítói opciók" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "Alkatrész kategória hozzáadása" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "Kezdeti készlet létrehozása" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "Kezdeti készlet tétel létrehozása ehhez az alkatrészhez" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "Kezdeti készlet mennyiség" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "Add meg a kezdeti készlet mennyiségét ennek az alkatrésznek" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "Válassz cél készlet helyet" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "Kategória paraméterek másolása" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "Paraméter sablonok másolása a kiválasztott alkatrész kategóriából" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "Beszállító adatok hozzáadása" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "Kezdeti beszállítói adatok létrehozása ehhez az alkatrészhez" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "Kép másolása" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "Kép másolása az eredeti alkatrészről" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "Paraméterek másolása" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "Parméterek másolása az eredeti alkatrészről" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "Felsőbb szintű alkatrész kategória" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "Alkatrész szerkesztése" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "Alkatrész módosítva" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "Alkatrész változat létrehozása" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "Értesítések kérése erre a tételre" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "Értesítések letiltva erre a tételre" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "Alkatrészjegyzék jóváhagyása" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "Alkatrészjegyzék jóvá lett hagyva" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "Alkatrészjegyzék másolása" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "Követésre kötelezett alkatrész" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "Virtuális alkatrész" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "Értesítésre beállított alkatrész" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "Értékesíthető alkatrész" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "Nincs több változat" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "Nincs alkatrész" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "Nincs kategória" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "Alacsony készlet" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "Megjelenítés listaként" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "Megjelenítés rácsnézetként" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "Megjelenítés fában" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "Értesítésre beállított kategória" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "Elérési út" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "Nincs a lekérdezéssel egyező teszt sablon" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "Ez a teszt a szülő alkatrészhez lett felvéve" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "Teszt eredmény sablon szerkesztése" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "Teszt eredmény sablon törlése" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "Nincs ${human_name} információ" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "${human_name} szerkesztése" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "${human_name} törlése" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "Aktuális készlet" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "Ütemezett készlet mennyiség" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "Egységes ár" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "Egységes ár különbség" @@ -8960,328 +9031,332 @@ msgstr "Add meg a kezdeti mennyiséget ehhez a készlet tételhez" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd üresen)" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "Készlet tétel lemásolva" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "Készlet tétel létrehozva" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "Több készlet tétel létre lett hozva" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "Sorozatszám keresése" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "Sorozatszám megadása" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "Adj meg egy sorozatszámot" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "Nincs egyező sorozatszám" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "Több egyező eredmény is van" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "Készlet hozzárendelés jóváhagyása" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "Készlet vevőhöz rendelése" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "Figyelem: az összevonási művelet nem vonható vissza" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "Némi információ elveszik a készlet összevonás során" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "A készlettörténet törölve lesz az összevont tételeknél" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "A beszállítói alkatrész információk törlődnek az összevont tételeknél" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "Készlet összevonás megerősítése" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "Készlet tételek összevonása" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "Készlet áthelyezése" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "Áthelyezés" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "Leltározás" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "Mennyiség" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "Készlet csökkentése" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "Kivesz" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Készlet növelése" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Hozzáad" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "Készlet törlése" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosítható" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "Készlet mennyiség megadása" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "Ki kell választanod legalább egy rendelkezésre álló készlet tételt" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "SIKER" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "SIKERTELEN" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "NINCS EREDMÉNY" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "Teszt sikeres" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "Teszt eredmény hozzáadása" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "Nincs teszt eredmény" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "Teszt dátuma" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "Gyártásban" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "Beépítve készlet tételbe" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "Vevő rendeléshez hozzárendelve" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Nincs hely megadva" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "Készlet tétel gyártás alatt" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "Készlet tétel lejárt" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "Készlet tétel hamarosan lejár" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "Készlet tétel teljes egészében lefoglalva" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "Készlet tétel részben lefoglalva" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "Készlet tétel beépítve egy másikba" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "Készlet tétel elutasítva" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "Készlet tétel elveszett" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "Készlet tétel megsemmisült" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Kimerült" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "Leltár" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "Beszállítói alkatrész nincs megadva" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "Nincs a lekérdezésnek megfelelő készlet tétel" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "tételek" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "batch-ek" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "helyek" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "Ismeretlen hely" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "Készlet állapot beállítása" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "Státuszkód kiválasztása" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "Státuszkódot ki kell választani" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "Lefoglalt mennyiség" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Részletek" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "A hely már nem létezik" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "Beszerzési megrendelés már nem létezik" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "Vevő már nem létezik" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "A készlet tétel már nem létezik" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Hozzáadva" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "Eltávolítva" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "Készlettörténet bejegyzés szerkesztése" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "Készlettörténet bejegyzés törlése" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "Nincsenek beépített tételek" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "Készlet tétel kiszedése" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "Másik tétel beépítése ebbe a készlet tételbe" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Készlet tételek csak akkor építhetők be ha teljesítik a következő kritériumokat" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "A készlet tétel egy olyan alkatrészre mutat ami alkatrészjegyzéke ennek a készlet tételnek" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "A készlet tétel jelenleg elérhető készleten" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "A készlet tétel egyedi követésre kötelezett és nem tartozik másik tételhez" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "Válaszd ki a beépítendő alkatrészt" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index e39c24e8c6..ff2e693a66 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "" @@ -212,7 +212,7 @@ msgstr "" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "" @@ -240,7 +240,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index b95278f630..2c45e07379 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -122,7 +122,7 @@ msgstr "File mancante" msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Allegato" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Seleziona file da allegare" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Link" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Link a URL esterno" @@ -152,11 +152,11 @@ msgstr "Commento" msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Utente" @@ -193,17 +193,17 @@ msgstr "Errore nella rinominazione del file" msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Nome" @@ -212,7 +212,7 @@ msgstr "Nome" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Nome" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Descrizione" @@ -240,7 +240,7 @@ msgstr "Descrizione (opzionale)" msgid "parent" msgstr "genitore" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Deve essere un numero valido" @@ -501,7 +501,7 @@ msgstr "Diviso dall'elemento genitore" msgid "Split child item" msgstr "Dividi elemento figlio" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Ordine di Produzione" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Riferimento" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Articolo" @@ -733,8 +733,8 @@ msgstr "Numero di riferimento ordine di vendita" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Posizione Di Origine" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Data di creazione" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Data di completamento" @@ -805,7 +805,7 @@ msgstr "Data di completamento" msgid "completed by" msgstr "Completato da" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Rilasciato da" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Responsabile" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Collegamento esterno" @@ -839,17 +839,17 @@ msgstr "Collegamento esterno" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Note" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "L'articolo in giacenza è sovrallocato" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "La quantità di assegnazione deve essere maggiore di zero" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "La quantità deve essere 1 per lo stock serializzato" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Articolo in giacenza selezionato non trovato nel BOM" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Produzione" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Articoli in magazzino" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Origine giacenza articolo" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Origine giacenza articolo" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Quantità" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Installa in" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" @@ -998,7 +999,7 @@ msgstr "Inserisci la quantità per l'output di compilazione" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Codice Seriale" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Posizione" @@ -1058,10 +1059,10 @@ msgstr "Posizione per gli output di build completati" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Stato" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "Distinta base (Bom)" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Data scadenza" @@ -1250,7 +1259,7 @@ msgstr "In ritardo" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Completato" @@ -1262,7 +1271,7 @@ msgstr "Completato" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Ordini di Vendita" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Inviato da" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Output Incompleti" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Lotto" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Creato" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Allegati" @@ -1441,27 +1451,27 @@ msgstr "Allegati" msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Modifica Note" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Assegnazione Completa" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "Tutte le giacenze non tracciate sono state assegnate" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "Visualizzazione elenco" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "{name.title()} File" msgid "Select {name} file to upload" msgstr "Seleziona il file {name} da caricare" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "È stata modificata un'impostazione che richiede un riavvio del server" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "Nome Istanza InvenTree" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "URL Base" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Valuta predefinita" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Consenti il download di immagini e file remoti da URL esterno" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Abilita supporto scanner codici a barre" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Consenti di modificare il valore del part number durante la modifica di un articolo" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "Copia i dati dei parametri di default quando si duplica un articolo" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Copia i dati di prova di default quando si duplica un articolo" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Template" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Componente" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Vendibile" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Mostra il prezzo nei moduli" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Mostra il prezzo dell'articolo in alcuni moduli" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "Mostra il prezzo nella BOM" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "Includi le informazioni sui prezzi nelle tabelle BOM" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "Crea giacenza iniziale" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "Crea giacenza iniziale sulla creazione articolo" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "Prezzo interno come BOM-Price" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "Utilizzare il prezzo interno (se impostato) nel calcolo del prezzo BOM" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Stampa di prova" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "giorni" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Referenza ordine d'acquisto" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Prezzo" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "Attivo" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "Punto di contatto" msgid "Link to external company information" msgstr "Collegamento alle informazioni aziendali esterne" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Immagine" @@ -2500,7 +2514,7 @@ msgstr "Valuta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Articolo di base" @@ -2515,12 +2529,12 @@ msgstr "Seleziona articolo" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Produttore" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Seleziona Produttore" @@ -2528,11 +2542,11 @@ msgstr "Seleziona Produttore" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "Codice articolo produttore (MPN)" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Codice articolo produttore" @@ -2557,8 +2571,8 @@ msgstr "Nome parametro" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Valore" @@ -2566,10 +2580,10 @@ msgstr "Valore" msgid "Parameter value" msgstr "Valore del parametro" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "Unità" @@ -2588,22 +2602,22 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Fornitore" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Seleziona fornitore" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "Descrizione articolo fornitore" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Nota" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "costo base" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Confezionamento" @@ -2644,7 +2658,7 @@ msgstr "Confezionamento" msgid "Part packaging" msgstr "Imballaggio del pezzo" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "multiplo" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Scarica immagine dall'URL" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Cliente" @@ -2739,7 +2753,7 @@ msgstr "Crea nuovo fornitore" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Nuovo fornitore articolo" @@ -2747,8 +2761,8 @@ msgstr "Nuovo fornitore articolo" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Opzioni" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "Giacenza Fornitore" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "Elimina articoli fornitore?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" @@ -2863,7 +2877,7 @@ msgstr "Produttori" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Articoli ordinati" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Fornitori" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Elimina articolo fornitore" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Elimina" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Parametri" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "Elimina il parametro" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "Aggiungi parametro" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "Articolo Fornitore" @@ -2979,7 +2993,7 @@ msgstr "Crea nuova allocazione magazzino" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "Nuovo Elemento in giacenza" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "Ordini articoli fornitore" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "Ordine Articolo" @@ -3030,10 +3044,10 @@ msgstr "Cancella riduzione di prezzo" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Magazzino" @@ -3056,7 +3070,7 @@ msgstr "Prezzi" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Articoli in magazzino" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "Articolo Fornitore" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Stato dell'ordine" @@ -3679,9 +3693,9 @@ msgstr "Seleziona l'articolo del fornitore" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Elimina riga" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "Specifica la posizione per lo stock iniziale" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Posizione Predefinita" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "Disponibilità in magazzino" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "Ordinato" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Posizione predefinita per gli articoli di questa categoria" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "Keywords predefinite" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "Categorie Articolo" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Articoli" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "Scelta non valida per l'articolo principale" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "I successivi numeri di serie disponibili sono" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "Il prossimo numero di serie disponibile è" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "Il numero di serie più recente è" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Nome articolo" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "È Template" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "Quest'articolo è un articolo di template?" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "Questa parte è una variante di un altro articolo?" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "Variante Di" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Descrizione articolo" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Parole Chiave" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Categoria" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN - Numero di riferimento interno" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "Numero Dell'articolo Interno" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Revisione" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Fornitore predefinito" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "Articolo fornitore predefinito" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "Scadenza Predefinita" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Scorta Minima" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "Livello minimo di giacenza consentito" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "Unità di conservazione delle scorte per quest'articolo" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "Quest'articolo può essere acquistato da fornitori esterni?" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "Quest'articolo è attivo?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "È una parte virtuale, come un prodotto software o una licenza?" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "Note dell'articolo - supporta la formattazione Markdown" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "BOM checksum" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "Codice Articolo" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "Sei sicuro di voler eliminare la categoria" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "Questa categoria contiene %(count)s sottocategorie" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "Se questa categoria viene eliminata, queste sottocategorie verranno spostate al" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "categoria" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" -msgstr "categoria articolo di livello superiore" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" +msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "Questa categoria contiene %(count)s sottocategorie" +msgid "If this category is deleted, these parts will be moved to %(category)s" +msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "Se questa categoria viene eliminata, queste parti verranno spostate nella categoria superiore %(path)s" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "Assegnazione Ordine Di Vendita" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "Articoli correlati" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "Distinta base" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "Fornitori articoli" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "Componenti Produttori" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "Articoli correlati" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Inattivo" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "Imposta categoria per i seguenti articoli" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Nessuna giacenza" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "Modifica Categoria Articoli" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "Data" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "Seriale" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "Data di Scadenza" @@ -5704,228 +5735,228 @@ msgstr "Conferma la disinstallazione" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "Seleziona Owner" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicazione magazzino" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "Installato In" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "Ultimo aggiornamento" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Nessuna posizione impostata" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "Azioni di stampa" msgid "Print labels" msgstr "Stampa etichette" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "Sei sicuro di voler eliminare questa posizione?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "Crea una nuova Posizione di Giacenza" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "Quantità richiesta" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Disponibile" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "Posizione non specificata" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Modifica allocazione magazzino" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "Modifica Posizione" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "Rimuovi Posizione" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Seleziona Articoli" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "Specificare il quantitativo assegnato allo stock" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Conferma l'assegnazione della giacenza" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "Nessuna posizione di magazzino corrispondente" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "Elimina il parametro" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "Elimina Parametri" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "NO" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "Quantità da ricevere" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "Stato giacenza" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "Totale" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "Prezzo Unitario" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "Prezzo Totale" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "Elimina posizione giacenza" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "Spedito al cliente" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "Attributi Articolo" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "Opzioni Fornitore" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "Aggiungi Categoria Articolo" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "Crea giacenza iniziale" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "Crea una giacenza iniziale per quest'articolo" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "Quantità iniziale" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "Selezione la posizione di destinazione della giacenza" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "Aggiungi Dati Fornitore" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "Copia immagine" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "Copia immagine dall'articolo originale" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "Copia parametri" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "Categoria articolo principale" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "Modifica l'articolo" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "Articolo modificato" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "Convalida la distinta dei materiali" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "Parte tracciabile" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "Parte virtuale" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "Parte sottoscritta" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "Parte vendibile" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "Nessuna variante trovata" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "Elimina relazione tra i componenti" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "Nessun articolo trovato" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "Nessuna categoria" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "In esaurimento" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "Visualizza come elenco" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "Visualizza come griglia" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "Visualizza come struttura ad albero" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "Categoria sottoscritta" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "Percorso" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "Nessun modello di test corrispondente" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "Modificare il risultato del test" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "Cancellare il risultato del test" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "Modifica ${human_name}" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "Elimina ${human_name}" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "Prezzo Singolo" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "Inserisci quantità iniziale per questo articolo in giacenza" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "Crea nuova allocazione magazzino" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "Creato più elementi stock" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "Trasferisci giacenza" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "Sposta" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "Conta giacenza" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "Conta" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "Rimuovi giacenza" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "Prendi" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Aggiungi giacenza" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Aggiungi" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "Elimina Stock" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "Specificare la quantità di magazzino" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "Devi selezionare almeno un articolo disponibile" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "PASS" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "FAIL" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "NESSUN RISULTATO" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "Aggiungi risultato test" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "Nessun risultato di prova trovato" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "In produzione" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "Installato nell'elemento stock" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "Assegnato all'ordine di vendita" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Nessuna giacenza impostata" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "L'articolo di magazzino è in produzione" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "Articolo stock assegnato al cliente" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "L'articolo stock è scaduto" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "Articolo in giacenza prossimo alla scadenza" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "L'elemento stock è stato installato in un altro articolo" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "L'articolo stock è stato rifiutato" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "Esaurito" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "Inventario" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "elementi" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "posizione" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "Posizione non definita" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "La posizione non esiste più" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Aggiunto" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "Rimosso" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 7f02fd2bff..c8aad01227 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "添付ファイル" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "添付ファイルを選択" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "コメント:" msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "ユーザー" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "お名前" @@ -212,7 +212,7 @@ msgstr "お名前" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "お名前" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "説明" @@ -240,7 +240,7 @@ msgstr "説明 (オプション)" msgid "parent" msgstr "親" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "パーツ" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "パーツを割り当てるためにビルドする" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "テンプレート" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "アセンブリ" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "コンポーネント" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "追跡可能" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "新しいサプライヤー・パーツを作成" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "新しいサプライヤー・パーツ" @@ -2747,8 +2761,8 @@ msgstr "新しいサプライヤー・パーツ" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "メーカー・パーツ" msgid "Create new manufacturer part" msgstr "新しいメーカー・パーツを作成" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "新しいメーカ―・パーツ" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "パーツの注文" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "パーツ" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 235818484b..c991764112 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "첨부파일" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "첨부할 파일을 선택하세요" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "링크" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "외부 URL로 링크" @@ -152,11 +152,11 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "사용자" @@ -193,17 +193,17 @@ msgstr "파일 이름 바꾸기 오류" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "이름" @@ -212,7 +212,7 @@ msgstr "이름" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "이름" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "설명" @@ -240,7 +240,7 @@ msgstr "설명 (선택 사항)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "외부 링크" @@ -839,17 +839,17 @@ msgstr "외부 링크" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "수량" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "일련번호" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "위치" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "상태" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "{name.title()} 파일" msgid "Select {name} file to upload" msgstr "업로드할 {name} 파일을 선택하세요" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "재시작 필요" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "회사명" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "기본 통화" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "기본 통화" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "URL에서 다운로드" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "바코드 지원" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "구입 가능" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "판매 가능" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "디버그 모드" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "페이지 크기" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "PDF 보고서 기본 페이지 크기" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "SSO 활성화" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "로그인 페이지에서 SSO 활성화" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "이메일 필요" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "두 번 보내기" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "이미지" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "URL에서 이미지 다운로드" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "고객" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "삭제" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "데이터" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "부품 명세서" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "일련번호" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "선택한 이메일 주소를 정말로 제거하시겠습니까?" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "테마 설정" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "테마 선택" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "선택" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "아니오" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "단가" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "이미지 복사" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "부품 명세서 복사" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "일련번호 찾기" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "일치하는 일련번호가 없습니다" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index 9d36d788b0..8d2f30b3c8 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -122,7 +122,7 @@ msgstr "Ontbrekend bestand" msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Bijlage" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Link" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Link naar externe URL" @@ -152,11 +152,11 @@ msgstr "Opmerking" msgid "File comment" msgstr "Bijlage opmerking" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Gebruiker" @@ -193,17 +193,17 @@ msgstr "Fout bij hernoemen bestand" msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Naam" @@ -212,7 +212,7 @@ msgstr "Naam" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Naam" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Omschrijving" @@ -240,7 +240,7 @@ msgstr "Omschrijving (optioneel)" msgid "parent" msgstr "overkoepelend" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" @@ -501,7 +501,7 @@ msgstr "Splits van bovenliggend item" msgid "Split child item" msgstr "Splits onderliggende item" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "Ongeldige keuze voor bovenliggende build" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Productie-opdracht" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Productie-opdracht referentie" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referentie" @@ -692,10 +692,10 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Productie-opdracht waar dit product aan is toegewezen" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Onderdeel" @@ -733,8 +733,8 @@ msgstr "Verkooporder referentie" msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar dit product aan is toegewezen" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Bron Locatie" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Bouwstatuscode" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Aanmaakdatum" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Opleveringsdatum" @@ -805,7 +805,7 @@ msgstr "Opleveringsdatum" msgid "completed by" msgstr "voltooid door" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "Gebruiker die de productie-opdracht heeft gegeven" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Verantwoordelijke" @@ -829,7 +829,7 @@ msgstr "Gebruiker verantwoordelijk voor deze productie-opdracht" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Externe Link" @@ -839,17 +839,17 @@ msgstr "Externe Link" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Opmerkingen" @@ -869,69 +869,69 @@ msgstr "Bouwuitvoer is al voltooid" msgid "Build output does not match Build Order" msgstr "Product komt niet overeen met de productie-opdracht" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Product" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Bouw om onderdelen toe te wijzen" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Voorraadartikel" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Bron voorraadartikel" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Bron voorraadartikel" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Aantal" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid te alloceren aan bouw" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" @@ -998,7 +999,7 @@ msgstr "Voer hoeveelheid in voor build-output" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Serienummers" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Locatie" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Status" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "Voorraad is niet volledig toegewezen aan deze productie-opdracht" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Streefdatum" @@ -1250,7 +1259,7 @@ msgstr "Achterstallig" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Voltooid" @@ -1262,7 +1271,7 @@ msgstr "Voltooid" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Verkooporder" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Uitgegeven door" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Onvolledige bouwuitvoer" @@ -1311,7 +1321,7 @@ msgstr "Toegewezen onderdelen" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Batch" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Gecreëerd" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Voorraad toewijzen aan Product" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Niet toegewezen voorraad" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Bijlagen" @@ -1441,27 +1451,27 @@ msgstr "Bijlagen" msgid "Build Notes" msgstr "Bouw notities" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Notities Bewerken" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "Kies {name} bestand om te uploaden" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Waarde van de instelling" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "Inventree Instantie Naam" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "String-beschrijving voor de server instantie" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "Basis URL" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Standaard valuta" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Standaard valuta" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barcode ondersteuning" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Barcodescanner ondersteuning inschakelen" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguliere expressiepatroon voor het corresponderen van deel IPN" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Dubbele IPN toestaan" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere delen worden samengesteld" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "Interne prijzen" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Testrapport" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "Verlopen voorraad" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "Verkoop verlopen voorraad" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "dagen" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Fabrikant" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Fabrikant selecteren" @@ -2528,11 +2542,11 @@ msgstr "Fabrikant selecteren" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Fabrikant artikel nummer (MPN)" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "Fabrikant onderdelen" msgid "Create new manufacturer part" msgstr "Maak nieuw fabrikant onderdeel" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Nieuw fabrikant onderdeel" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "Fabrikanten" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Standaard locatie" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Standaard locatie voor onderdelen in deze categorie" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "Toewijzingen verkoopopdracht" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "Nieuw stuklijstitem" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "Samenstellingen" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "Productie-opdracht toewijzingen" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "Fabrikanten" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "Fabrikant onderdeel verwijderen" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Serienummer" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Voorraadlocatie" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Geen Locatie ingesteld" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "Afdrukacties" msgid "Print labels" msgstr "Labels afdrukken" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "Maak nieuwe voorraadlocatie" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Beschikbaar" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "Locatie is niet opgegeven" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Voorraadtoewijzing bewerken" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Voorraadtoewijzing verwijderen" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "Toegewezen" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "Voorraad toewijzen" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Onderdelen selecteren" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "Er moet op zijn minst één onderdeel toegewezen worden" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Bevestig de voorraadtoewijzing" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "Geen fabricage onderdelen gevonden" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "Samengesteld onderdeel" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Geen voorraadlocatie ingesteld" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index c9baec3131..c12c999852 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -122,7 +122,7 @@ msgstr "Fil mangler" msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Vedlegg" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Velg fil å legge ved" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Lenke" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Lenke til ekstern URL" @@ -152,11 +152,11 @@ msgstr "Kommenter" msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Bruker" @@ -193,17 +193,17 @@ msgstr "Feil ved endring av navn" msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Navn" @@ -212,7 +212,7 @@ msgstr "Navn" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Navn" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Beskrivelse" @@ -240,7 +240,7 @@ msgstr "Beskrivelse (valgfritt)" msgid "parent" msgstr "overkategori" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Nummer må være gyldig" @@ -501,7 +501,7 @@ msgstr "Delt fra overordnet element" msgid "Split child item" msgstr "Delt fra underelement" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Sammenslått lagervare" @@ -648,7 +648,7 @@ msgstr "Ugylding valg for overordnet build" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Build ordre" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Bygg ordrereferanse" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referanse" @@ -692,10 +692,10 @@ msgstr "Build order som denne build er tildelt til" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Build order som denne build er tildelt til" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Del" @@ -733,8 +733,8 @@ msgstr "Salg order referanse" msgid "SalesOrder to which this build is allocated" msgstr "Salgorder som denne build er tildelt til" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Kilde plassering" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Byggstatuskode" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Batch kode" @@ -783,7 +783,7 @@ msgstr "Batch kode" msgid "Batch code for this build output" msgstr "Batch kode for denne build output" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Opprettelsesdato" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Fullført dato" @@ -805,7 +805,7 @@ msgstr "Fullført dato" msgid "completed by" msgstr "fullført av" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Utstedt av" @@ -816,9 +816,9 @@ msgstr "Brukeren som utstede denne prosjekt order" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Ansvarlig" @@ -829,7 +829,7 @@ msgstr "Bruker ansvarlig for denne prosjekt order" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Ekstern link" @@ -839,17 +839,17 @@ msgstr "Ekstern link" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Notater" @@ -869,69 +869,69 @@ msgstr "Prosjekt utdata er allerede utfylt" msgid "Build output does not match Build Order" msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelige lager mengde ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "Lagervare er overtildelt" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Tildeling antallet må være større enn null" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "Mengden må væew 1 for serialisert lagervare" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Valgt lagevare ikke funnet i BOM" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Prosjekt" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Bygge for å tildele deler" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Lagervare" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Kilde lagervare" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Kilde lagervare" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Antall" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Installerings informasjon" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Målets lagervare" @@ -998,7 +999,7 @@ msgstr "Angi antall for build utgang" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Serienummer" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Beliggenhet" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Status" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "BOM varer" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Måldato" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Fullført" @@ -1262,7 +1271,7 @@ msgstr "Fullført" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Salgsorder" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Utstedt av" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "Tildelte deler" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Opprettet" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Fjern lager allokering" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Vedlegg" @@ -1441,27 +1451,27 @@ msgstr "Vedlegg" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Rediger notater" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "Alle usporbar lagervarer har tildelt" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,13 +1495,9 @@ msgstr "Vis liste" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "Ventende elementer" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" -msgstr "Fullført elementer" +msgid "Completed Outputs" +msgstr "" #: build/views.py:73 msgid "Build was cancelled" @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "Velg {name} fil som skal lastes opp" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstaver)" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "Omstart påkrevd" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "En innstilling har blitt endrett som krever en serveromstart" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Firmanavn" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "Internt firmanavn" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Standardvaluta" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Last ned fra URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Tilat nedlastning av eksterne bilder og filer fra ekstern URL" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Strekkode støtte" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Aktiver skrekkodeleser støtte" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Tilat duplisert IPN" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme IPN" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Tillat redigering av IPN" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat å endre IPN-verdien mens du redigerer en del" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Kopier kategori parametermaler ved oppretting av en del" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Mal" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Montering" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Komponent" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Salgbar" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Sporbar" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Vis pris i skjemaer" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "Vis delpris i noen skjemaer" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "Salgsorder referanse prefiks" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "Prefiks verdi for salgsorder referanse" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "Salgsorder referanse prefiks" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "Prefiks verdi for salgsorder referanse" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "Krevt at brukeren angi e-post ved registrering" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO brukere" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO kontodata" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "Ved registrering spør brukere to ganger for e-posten" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "Ved registrerting, spør brukere to ganger for passord" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "Gruppe for hvilke nye brukere som er tilknyttet registrering" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "Aktiver URL integrering" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrering" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "Aktiver app integrasjon" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "Vis abbonerte deler" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "Vis abbonerte deler på hjemmesiden" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "Vis abbonerte kategorier" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "Vis abbonerte delkatekorier på hjemmesiden" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på hjemmesiden" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "Antall nylig deler" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "Vis uvaliderte BOMs" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "Vis BOMs som venter validering på hjemmesiden" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endret lagervarer på hjemmesiden" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "Siste lagertelling" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "Antall nylige lagervarer som skal vises på indeksside" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "Vis lav lager" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "Vis lav lagervarer på hjemmesiden" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "Vis tom lagervarer" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "Aktiv" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "Sjetong" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "Vert" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "Tittel" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "Brødtekst" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "Link til ekstern bedriftsinformasjon" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Bilde" @@ -2500,7 +2514,7 @@ msgstr "Valuta" msgid "Default currency used for this company" msgstr "Standardvaluta brukt for dette firmaet" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "Last ned bilde fra URL" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Kunde" @@ -2739,7 +2753,7 @@ msgstr "Oprett ny leverandørdel" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Ny leverandørdel" @@ -2747,8 +2761,8 @@ msgstr "Ny leverandørdel" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Valgmuligheter" @@ -2776,7 +2790,7 @@ msgstr "Produsentdeler" msgid "Create new manufacturer part" msgstr "Opprett ny produsentdeler" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Ny produsentdel" @@ -2790,7 +2804,7 @@ msgstr "Leverandør lager" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Ny bestillingsorder" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Ny salgsorder" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Tildelt lagervare" @@ -2840,13 +2854,13 @@ msgstr "Notater til firma" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "Slett leverandørdeler?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "Alle valgte leverandørdeler vil slettes" @@ -2863,7 +2877,7 @@ msgstr "Produsenter" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Bestill del" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Leverandører" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Slett leverandørdeler" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Slett" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "Tildelt lagervarer" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index beb1d8626c..bb6ac81749 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -122,7 +122,7 @@ msgstr "Brak pliku" msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Załącznik" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Wybierz plik do załączenia" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Łącze" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" @@ -152,11 +152,11 @@ msgstr "Komentarz" msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Użytkownik" @@ -193,17 +193,17 @@ msgstr "Błąd zmiany nazwy pliku" msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Nazwa" @@ -212,7 +212,7 @@ msgstr "Nazwa" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Nazwa" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Opis" @@ -240,7 +240,7 @@ msgstr "Opis (opcjonalny)" msgid "parent" msgstr "nadrzędny" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "Podziel element podrzędny" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Zlecenie Budowy" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referencja" @@ -692,10 +692,10 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Część" @@ -733,8 +733,8 @@ msgstr "Odwołanie do zamówienia sprzedaży" msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Lokalizacja źródła" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Kod statusu budowania" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Kod partii" @@ -783,7 +783,7 @@ msgstr "Kod partii" msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Data utworzenia" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Data zakończenia" @@ -805,7 +805,7 @@ msgstr "Data zakończenia" msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Wydany przez" @@ -816,9 +816,9 @@ msgstr "Użytkownik, który wydał to zamówienie" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Odpowiedzialny" @@ -829,7 +829,7 @@ msgstr "Użytkownik odpowiedzialny za to zamówienie budowy" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Link Zewnętrzny" @@ -839,17 +839,17 @@ msgstr "Link Zewnętrzny" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Uwagi" @@ -869,69 +869,69 @@ msgstr "Budowanie wyjścia jest już ukończone" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Alokowana ilość musi być większa niż zero" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Budowa" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Element magazynowy" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Lokalizacja magazynowania przedmiotu" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Lokalizacja magazynowania przedmiotu" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Ilość" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Numer seryjny" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Lokalizacja" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Status" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Data docelowa" @@ -1250,7 +1259,7 @@ msgstr "Zaległe" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Zakończone" @@ -1262,7 +1271,7 @@ msgstr "Zakończone" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Zamówienie zakupu" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Dodane przez" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Partia" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Utworzony" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "Przydziel zapasy do budowy" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Cofnij przydział zapasów" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Załączniki" @@ -1441,27 +1451,27 @@ msgstr "Załączniki" msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Nowe zlecenie budowy" @@ -1485,12 +1495,8 @@ msgstr "Pokaż widok listy" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "Nazwa instancji InvenTree" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Włącz obsługę skanera kodów" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Szablon" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Złożenie" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Komponent" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Możliwość śledzenia" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Wirtualny" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Raporty testów" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "dni" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Cena" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "Aktywny" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "Punkt kontaktowy" msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Obraz" @@ -2500,7 +2514,7 @@ msgstr "Waluta" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Część bazowa" @@ -2515,12 +2529,12 @@ msgstr "Wybierz część" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Producent" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Wybierz producenta" @@ -2528,11 +2542,11 @@ msgstr "Wybierz producenta" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Numer producenta" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "Jednostki" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Dostawca" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Wybierz dostawcę" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Uwaga" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Opakowanie" @@ -2644,7 +2658,7 @@ msgstr "Opakowanie" msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "wielokrotność" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Klient" @@ -2739,7 +2753,7 @@ msgstr "Utwórz nowego dostawcę części" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Nowy dostawca części" @@ -2747,8 +2761,8 @@ msgstr "Nowy dostawca części" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "Opcje" @@ -2776,7 +2790,7 @@ msgstr "Części producenta" msgid "Create new manufacturer part" msgstr "Utwórz nową część producenta" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "Nowa część producenta" @@ -2790,7 +2804,7 @@ msgstr "Zapasy dostawcy" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "Producenci" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Zamów część" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "Dostawcy" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "Usuń" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "Parametry" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "Dodaj parametr" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "Utwórz nowy towar" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "Nowy towar" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Stan" @@ -3056,7 +3070,7 @@ msgstr "Cennik" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Towary" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "Zamówienie" @@ -3328,8 +3342,8 @@ msgstr "Zamówienie" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Zlecenie zakupu" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "Odebrane" @@ -3348,9 +3362,9 @@ msgstr "Odebrane" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Cena zakupu" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "Status zamówienia" @@ -3679,9 +3693,9 @@ msgstr "Wybierz dostawcę części" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "Akcje" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Domyślna lokalizacja" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "Dostępna ilość" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "Domyślne słowa kluczowe" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Części" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Nazwa części" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "Wariant" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Opis części" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Słowa kluczowe" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "Kategoria" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "IPN" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Wersja" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "Czy ta część może być zbudowana z innych części?" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "Czy ta część może być użyta do budowy innych części?" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Wymagane" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "Dane" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "Część 1" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "Część 2" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "Czy na pewno chcesz usunąć tę kategorię?" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "kategoria" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "Duplikuj część" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "Zapasy części" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "Warianty Części" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "Utwórz nowy wariant" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "Nowy wariant" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "Dodaj powiązane" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "Zestawienie materiałowe" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "Kopiuj BOM" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "Powiązane części" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "Dodaj powiązaną część" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "Część jest wirtualna (nie fizyczna)" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Nieaktywny" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Brak w magazynie" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "Edytuj kategorię części" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Numer Seryjny" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "Wynik" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "Data" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "Data ważności" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "Nadrzędny towar" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "Wybierz pasującą część dostawcy dla tego towaru" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Ilość nie może przekraczać dostępnej ilości towaru ({n})" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "Ostatnia aktualizacja" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Lokacje nie są ustawione" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "Drukuj etykiety" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "Czy na pewno chcesz skasować tą lokację?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "Utwórz nową lokalizację magazynową" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Dostępne" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "Ilość za" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "Przydzielono" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Potwierdź przydział zapasów" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "Cena jednostkowa" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "Zaktualizuj cenę jednostkową" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "Cena jednostkowa" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "Dodaj stan" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "Dodaj" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Szczegóły" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "Dodano" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 10b487d252..2d4f3a534c 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "" @@ -212,7 +212,7 @@ msgstr "" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "" @@ -240,7 +240,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 66adf93267..7671a15a86 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -122,7 +122,7 @@ msgstr "Файл не найден" msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Вложения" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Выберите файл для вложения" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Ссылка" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Ссылка на внешний URL" @@ -152,11 +152,11 @@ msgstr "Комментарий" msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Пользователь" @@ -193,17 +193,17 @@ msgstr "Ошибка переименования файла" msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Название" @@ -212,7 +212,7 @@ msgstr "Название" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Название" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Описание" @@ -240,7 +240,7 @@ msgstr "Описание (необязательно)" msgid "parent" msgstr "родитель" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Должно быть действительным номером" @@ -501,7 +501,7 @@ msgstr "Отделить от родительского элемента" msgid "Split child item" msgstr "Разбить дочерний элемент" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "Объединенные позиции на складе" @@ -648,7 +648,7 @@ msgstr "Неверный выбор для родительской сборки #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Порядок сборки" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Ссылка на заказ" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Отсылка" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Детали" @@ -733,8 +733,8 @@ msgstr "Отсылка на заказ" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Расположение источника" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Код статуса сборки" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Штрих код" @@ -783,7 +783,7 @@ msgstr "Штрих код" msgid "Batch code for this build output" msgstr "Штрих код для этого вывода сборки" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Дата создания" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Дата завершения" @@ -805,7 +805,7 @@ msgstr "Дата завершения" msgid "completed by" msgstr "выполнено" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Выдал/ла" @@ -816,9 +816,9 @@ msgstr "Пользователь, выпустивший этот заказ н #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Ответственный" @@ -829,7 +829,7 @@ msgstr "Пользователь ответственный за этот зак #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Внешняя ссылка" @@ -839,17 +839,17 @@ msgstr "Внешняя ссылка" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Заметки" @@ -869,69 +869,69 @@ msgstr "Вывод сборки уже завершен" msgid "Build output does not match Build Order" msgstr "Вывод сборки не совпадает с порядком сборки" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "Предмет на складе перераспределен" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Выделенное количество должно быть больше нуля" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "Количество должно быть 1 для сериализованных запасов" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "Выбранный предмет со складом не найден в BOM" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Сборка" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Предметы на складе" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Исходный складской предмет" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Исходный складской предмет" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Количество" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "Введите количество для вывода сборки" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Серийные номера" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Расположение" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Статус" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "BOM Компонент" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Целевая дата" @@ -1250,7 +1259,7 @@ msgstr "Просрочено" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Завершённые" @@ -1262,7 +1271,7 @@ msgstr "Завершённые" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Заказ покупателя" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Выдано" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Незавершенные выходные данные" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Партия" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Создано" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Приложения" @@ -1441,27 +1451,27 @@ msgstr "Приложения" msgid "Build Notes" msgstr "Заметки сборки" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Подтвердите выделение запасов" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index 8c4acc7c80..60cc3452aa 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Bilaga" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Välj fil att bifoga" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "Kommentar" msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Användare" @@ -193,17 +193,17 @@ msgstr "Fel vid namnbyte av fil" msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Namn" @@ -212,7 +212,7 @@ msgstr "Namn" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Namn" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Beskrivning" @@ -240,7 +240,7 @@ msgstr "Beskrivning (valfritt)" msgid "parent" msgstr "överordnad" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index d7b247832d..eb632f412c 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "" @@ -212,7 +212,7 @@ msgstr "" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "" @@ -240,7 +240,7 @@ msgstr "" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "" @@ -1262,7 +1271,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index a6a49e1458..c30f095ce9 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "Ek" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "Bağlantı" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "Harici URL'ye bağlantı" @@ -152,11 +152,11 @@ msgstr "Yorum" msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Kullanıcı" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "Adı" @@ -212,7 +212,7 @@ msgstr "Adı" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "Adı" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Açıklama" @@ -240,7 +240,7 @@ msgstr "Açıklama (isteğe bağlı)" msgid "parent" msgstr "üst" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" @@ -501,7 +501,7 @@ msgstr "Üst ögeden ayır" msgid "Split child item" msgstr "Alt ögeyi ayır" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Yapım İşi Emri" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "Referans" @@ -692,10 +692,10 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Parça" @@ -733,8 +733,8 @@ msgstr "Satış Emri Referansı" msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "Kaynak Konum" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "Yapım işi durum kodu" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "Sıra numarası" @@ -783,7 +783,7 @@ msgstr "Sıra numarası" msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "Oluşturulma tarihi" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak." #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Tamamlama tarihi" @@ -805,7 +805,7 @@ msgstr "Tamamlama tarihi" msgid "completed by" msgstr "tamamlayan" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "Veren" @@ -816,9 +816,9 @@ msgstr "Bu yapım işi emrini veren kullanıcı" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "Sorumlu" @@ -829,7 +829,7 @@ msgstr "Bu yapım işi emrinden sorumlu kullanıcı" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "Harici Bağlantı" @@ -839,17 +839,17 @@ msgstr "Harici Bağlantı" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "Notlar" @@ -869,69 +869,69 @@ msgstr "Yapım işi çıktısı zaten tamamlanmış" msgid "Build output does not match Build Order" msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "Seri numaralı stok için miktar bir olmalı" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "Yapım İşi" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "Yapım işi için tahsis edilen parçalar" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "Stok Kalemi" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "Kaynak stok kalemi" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "Kaynak stok kalemi" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "Miktar" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "Hedef stok kalemi" @@ -998,7 +999,7 @@ msgstr "Yapım işi çıktısı için miktarını girin" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "Seri Numaraları" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "Konum" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Durum" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "Hedeflenen tarih" @@ -1250,7 +1259,7 @@ msgstr "Vadesi geçmiş" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Tamamlandı" @@ -1262,7 +1271,7 @@ msgstr "Tamamlandı" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "Sipariş Emri" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "Veren" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "Tamamlanmamış Çıktılar" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "Toplu" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "Oluşturuldu" @@ -1340,7 +1350,7 @@ msgstr "Alt Yapım İşi Emrileri" msgid "Allocate Stock to Build" msgstr "Yapım İşi için Stok Tahsis Et" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "Stok tahsisini kaldır" @@ -1431,8 +1441,8 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Ekler" @@ -1441,27 +1451,27 @@ msgstr "Ekler" msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "Notları Düzenle" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "Yeni Yapım İşi Emri" @@ -1485,12 +1495,8 @@ msgstr "Liste görünümünü görüntüle" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "{name.title()} Dosya" msgid "Select {name} file to upload" msgstr "{name} dosyasını yüklemek için seçin" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "Varsayılan para birimi" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "Barkod tarayıcı desteğini etkinleştir" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "Şablon" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "Montaj" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "Bileşen" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "Sanal" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "Formlarda Fiyat Göster" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "Test Raporları" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "günler" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "Fiyat" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "Aktif" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "Resim" @@ -2500,7 +2514,7 @@ msgstr "Para birimi" msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "Temel Parça" @@ -2515,12 +2529,12 @@ msgstr "Parça seçin" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Üretici" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "Üretici seçin" @@ -2528,11 +2542,11 @@ msgstr "Üretici seçin" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "ÜPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "Üretici Parça Numarası" @@ -2557,8 +2571,8 @@ msgstr "Parametre adı" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "Değer" @@ -2566,10 +2580,10 @@ msgstr "Değer" msgid "Parameter value" msgstr "Parametre değeri" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Tedarikçi" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "Tedarikçi seçin" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "Not" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "temel maliyet" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "Paketleme" @@ -2644,7 +2658,7 @@ msgstr "Paketleme" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "çoklu" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "Müşteri" @@ -2739,7 +2753,7 @@ msgstr "Yeni tedarikçi parçası oluştur" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "Yeni Tedarikçi Parçası" @@ -2747,8 +2761,8 @@ msgstr "Yeni Tedarikçi Parçası" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "Tedarikçi Stoku" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "Yeni Satın Alma Emri" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "Yeni Satış Emri" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "Atanan Stok" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "Üreticiler" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "Parça siparişi" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "Tedarikçi parçalarını sil" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "Tedarikçi Parçası" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "Tedarikçi Parçası Emirleri" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Stok" @@ -3056,7 +3070,7 @@ msgstr "Fiyatlandırma" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "Stok Kalemleri" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "Tedarikçi Parçası Seçin" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "İşlemler" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "Varsayılan Konum" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "Parametre şablonunu tüm kategorilere ekle" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "Bu kategori içindeki parçalar için varsayılan konum" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "Parça Kategorileri" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Parçalar" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "Sonraki kullanılabilir seri numaraları" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "Sonraki müsait seri numarası" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "En son seri numarası" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "Parça adı" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "Şablon Mu" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "Bu parça başka bir parçanın çeşidi mi?" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "Çeşidi" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "Parça açıklaması" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "Anahtar kelimeler" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "DPN" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "Revizyon" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "Minimum Stok" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "Bu parça aktif mi?" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "Oluşturan Kullanıcı" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "Gerekli" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "Bu kategoriyi silmek istediğinize emin misiniz" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "Bu kategori %(count)s alt kategori içermektedir" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "Bu kategori silinirse, alt kategoriler taşınacaktır" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "kategori" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "Bu kategori %(count)s parça içermektedir" - -#: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +#: part/templates/part/category_delete.html:27 +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "Parça Stoku" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "Parça Test Şablonları" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "Test Şablonu Ekle" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "Parça Çeşitleri" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "Yeni çeşit oluştur" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "Yeni Çeşit" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "Parça Tedarikçileri" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "Pasif" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "Aşağıdaki parçalara kategori ayarla" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "Stok Yok" @@ -5363,7 +5394,7 @@ msgstr "Parça Parametre Şablonu Düzenle" msgid "Delete Part Parameter Template" msgstr "Parça Parametre Şablonu Sil" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "Seri Numara" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "Seri No" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "Kurulu stok kalemlerinin kaldırılmasını onayla" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "Bu seri numarasına sahip stok kalemi zaten var" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "Bu stok kalemi için tedarikçi parçası seçin" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Stok Konumu" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "Seri numaraları zaten mevcut: {exists}" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "Bu stok kalemi seri numaları - Benzersiz bir seri numarasına sahip ve miktarı ayarlanamaz." #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "Konum ayarlanmadı" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "Yazdırma İşlemleri" msgid "Print labels" msgstr "Etiketleri yazdır" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "Bu stok konumunu silmek istediğinizden emin misiniz?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "Stok ayarlamasını onayla" @@ -6448,7 +6507,7 @@ msgstr "Stok ayarlamasını onayla" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "Yeni Stok konumu oluştur" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "Tema Ayarları" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "Tema Seç" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "Dil Ayarları" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "Dili Ayarla" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "Mevcut" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "Gerekli Parça" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "Stok tahsisini düzenle" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "Stok tahsisini sil" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "Parçaları Seçin" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "Stok tahsisini onayla" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "Şablon Parça" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "Çeşit bulunamadı" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "Sorgu ile eşleşen test şablonu bulunamadı" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "Stok konumu ayarlanmadı" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "konumlar" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "Tanımsız konum" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "Detaylar" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "Konum artık yok" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index 5144350a90..97353622b3 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -122,7 +122,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "" @@ -152,11 +152,11 @@ msgstr "Bình luận" msgid "File comment" msgstr "" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "Người dùng" @@ -193,17 +193,17 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "" @@ -212,7 +212,7 @@ msgstr "" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "Mô tả" @@ -240,7 +240,7 @@ msgstr "Mô tả (tùy chọn)" msgid "parent" msgstr "" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "Tạo đơn hàng" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "" @@ -692,10 +692,10 @@ msgstr "" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "Nguyên liệu" @@ -733,8 +733,8 @@ msgstr "" msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "" @@ -783,7 +783,7 @@ msgstr "" msgid "Batch code for this build output" msgstr "" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "Ngày hoàn thành" @@ -805,7 +805,7 @@ msgstr "Ngày hoàn thành" msgid "completed by" msgstr "" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "" @@ -816,9 +816,9 @@ msgstr "" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "" @@ -829,7 +829,7 @@ msgstr "" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "" @@ -839,17 +839,17 @@ msgstr "" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "" @@ -869,69 +869,69 @@ msgstr "" msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "Trạng thái" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "" @@ -1250,7 +1259,7 @@ msgstr "" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "Đã hoàn thành" @@ -1262,7 +1271,7 @@ msgstr "Đã hoàn thành" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "" @@ -1340,7 +1350,7 @@ msgstr "" msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" @@ -1441,27 +1451,27 @@ msgstr "" msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "" @@ -1485,12 +1495,8 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "" @@ -2500,7 +2514,7 @@ msgstr "" msgid "Default currency used for this company" msgstr "" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "Nhà sản xuất" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "" @@ -2528,11 +2542,11 @@ msgstr "" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "" @@ -2557,8 +2571,8 @@ msgstr "" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "" @@ -2566,10 +2580,10 @@ msgstr "" msgid "Parameter value" msgstr "" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "Nhà cung cấp" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "" @@ -2644,7 +2658,7 @@ msgstr "" msgid "Part packaging" msgstr "" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "" @@ -2739,7 +2753,7 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "" @@ -2747,8 +2761,8 @@ msgstr "" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "" @@ -2776,7 +2790,7 @@ msgstr "" msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "" @@ -2790,7 +2804,7 @@ msgstr "" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "" @@ -2863,7 +2877,7 @@ msgstr "" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "Kiện hàng" @@ -3056,7 +3070,7 @@ msgstr "" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "Đơn hàng" @@ -3339,7 +3353,7 @@ msgstr "" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "Giá mua" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "Nguyên liệu" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" +msgid "This category contains %(n)s child categories" msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" +msgid "If this category is deleted, these parts will be moved to %(category)s" msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Kho hàng" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "" msgid "Print labels" msgstr "" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "Thiết lập giao diện" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "Thiết lập ngôn ngữ" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 58c2e559da..0dcd4d02fb 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-07 04:31+0000\n" -"PO-Revision-Date: 2022-03-07 04:47\n" +"POT-Creation-Date: 2022-03-10 05:08+0000\n" +"PO-Revision-Date: 2022-03-10 05:25\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -122,7 +122,7 @@ msgstr "缺少文件" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:197 stock/models.py:2123 +#: InvenTree/models.py:197 stock/models.py:2138 #: templates/js/translated/attachment.js:119 msgid "Attachment" msgstr "附件" @@ -132,15 +132,15 @@ msgid "Select file to attach" msgstr "选择附件" #: InvenTree/models.py:204 company/models.py:131 company/models.py:348 -#: company/models.py:564 order/models.py:127 part/models.py:860 +#: company/models.py:564 order/models.py:127 part/models.py:868 #: report/templates/report/inventree_build_order_base.html:165 #: templates/js/translated/company.js:540 -#: templates/js/translated/company.js:829 templates/js/translated/part.js:1347 +#: templates/js/translated/company.js:829 templates/js/translated/part.js:1348 msgid "Link" msgstr "链接" -#: InvenTree/models.py:205 build/models.py:332 part/models.py:861 -#: stock/models.py:618 +#: InvenTree/models.py:205 build/models.py:332 part/models.py:869 +#: stock/models.py:633 msgid "Link to external URL" msgstr "链接到外部 URL" @@ -152,11 +152,11 @@ msgstr "注释" msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1277 -#: common/models.py:1278 common/models.py:1506 common/models.py:1507 -#: part/models.py:2317 part/models.py:2337 +#: InvenTree/models.py:214 InvenTree/models.py:215 common/models.py:1288 +#: common/models.py:1289 common/models.py:1517 common/models.py:1518 +#: part/models.py:2325 part/models.py:2345 #: report/templates/report/inventree_test_report_base.html:96 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:2783 msgid "User" msgstr "用户" @@ -193,17 +193,17 @@ msgstr "重命名文件出错" msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1492 -#: company/models.py:415 label/models.py:112 part/models.py:804 -#: part/models.py:2501 plugin/models.py:40 report/models.py:181 +#: InvenTree/models.py:342 InvenTree/models.py:343 common/models.py:1503 +#: company/models.py:415 label/models.py:112 part/models.py:812 +#: part/models.py:2509 plugin/models.py:40 report/models.py:181 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/plugin.html:48 #: templates/InvenTree/settings/plugin.html:125 #: templates/InvenTree/settings/plugin_settings.html:23 #: templates/InvenTree/settings/settings.html:319 -#: templates/js/translated/company.js:641 templates/js/translated/part.js:568 -#: templates/js/translated/part.js:707 templates/js/translated/part.js:1654 -#: templates/js/translated/stock.js:2573 +#: templates/js/translated/company.js:641 templates/js/translated/part.js:569 +#: templates/js/translated/part.js:708 templates/js/translated/part.js:1655 +#: templates/js/translated/stock.js:2583 msgid "Name" msgstr "名称" @@ -212,7 +212,7 @@ msgstr "名称" #: company/models.py:570 company/templates/company/company_base.html:68 #: company/templates/company/manufacturer_part.html:76 #: company/templates/company/supplier_part.html:73 label/models.py:119 -#: order/models.py:125 part/models.py:827 part/templates/part/category.html:74 +#: order/models.py:125 part/models.py:835 part/templates/part/category.html:74 #: part/templates/part/part_base.html:163 #: part/templates/part/set_category.html:14 report/models.py:194 #: report/models.py:553 report/models.py:592 @@ -220,15 +220,15 @@ msgstr "名称" #: stock/templates/stock/location.html:92 #: templates/InvenTree/settings/plugin_settings.html:33 #: templates/js/translated/bom.js:552 templates/js/translated/bom.js:763 -#: templates/js/translated/build.js:1973 templates/js/translated/company.js:345 +#: templates/js/translated/build.js:1988 templates/js/translated/company.js:345 #: templates/js/translated/company.js:551 #: templates/js/translated/company.js:840 templates/js/translated/order.js:971 #: templates/js/translated/order.js:1192 templates/js/translated/order.js:1454 -#: templates/js/translated/part.js:627 templates/js/translated/part.js:1022 -#: templates/js/translated/part.js:1107 templates/js/translated/part.js:1277 -#: templates/js/translated/part.js:1673 templates/js/translated/part.js:1742 -#: templates/js/translated/stock.js:1656 templates/js/translated/stock.js:2402 -#: templates/js/translated/stock.js:2585 templates/js/translated/stock.js:2623 +#: templates/js/translated/part.js:628 templates/js/translated/part.js:1023 +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1278 +#: templates/js/translated/part.js:1674 templates/js/translated/part.js:1743 +#: templates/js/translated/stock.js:1666 templates/js/translated/stock.js:2412 +#: templates/js/translated/stock.js:2595 templates/js/translated/stock.js:2633 msgid "Description" msgstr "描述信息" @@ -240,7 +240,7 @@ msgstr "描述 (可选)" msgid "parent" msgstr "上级项" -#: InvenTree/serializers.py:65 part/models.py:2820 +#: InvenTree/serializers.py:65 part/models.py:2828 msgid "Must be a valid number" msgstr "必须是有效数字" @@ -501,7 +501,7 @@ msgstr "从父项拆分" msgid "Split child item" msgstr "拆分子项" -#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2160 +#: InvenTree/status_codes.py:295 templates/js/translated/stock.js:2170 msgid "Merged stock items" msgstr "" @@ -648,7 +648,7 @@ msgstr "上级生产选项无效" #: build/models.py:139 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:106 -#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2378 +#: templates/js/translated/build.js:677 templates/js/translated/stock.js:2388 msgid "Build Order" msgstr "生产订单" @@ -667,11 +667,11 @@ msgid "Build Order Reference" msgstr "相关生产订单" #: build/models.py:201 order/models.py:213 order/models.py:563 -#: order/models.py:843 part/models.py:2731 +#: order/models.py:843 part/models.py:2739 #: part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_po_report.html:92 #: report/templates/report/inventree_so_report.html:92 -#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1402 +#: templates/js/translated/bom.js:770 templates/js/translated/build.js:1414 #: templates/js/translated/order.js:1223 templates/js/translated/order.js:2349 msgid "Reference" msgstr "引用" @@ -692,10 +692,10 @@ msgstr "此次生产匹配的订单" #: build/models.py:227 build/templates/build/build_base.html:77 #: build/templates/build/detail.html:30 company/models.py:705 #: order/models.py:912 order/models.py:986 -#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:359 -#: part/models.py:2263 part/models.py:2279 part/models.py:2298 -#: part/models.py:2315 part/models.py:2417 part/models.py:2539 -#: part/models.py:2629 part/models.py:2706 part/models.py:3013 +#: order/templates/order/order_wizard/select_parts.html:32 part/models.py:367 +#: part/models.py:2271 part/models.py:2287 part/models.py:2306 +#: part/models.py:2323 part/models.py:2425 part/models.py:2547 +#: part/models.py:2637 part/models.py:2714 part/models.py:3021 #: part/serializers.py:669 part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/set_category.html:13 @@ -708,16 +708,16 @@ msgstr "此次生产匹配的订单" #: templates/email/low_stock_notification.html:16 #: templates/js/translated/barcode.js:383 templates/js/translated/bom.js:551 #: templates/js/translated/bom.js:728 templates/js/translated/build.js:903 -#: templates/js/translated/build.js:1271 templates/js/translated/build.js:1666 -#: templates/js/translated/build.js:1978 templates/js/translated/company.js:492 +#: templates/js/translated/build.js:1283 templates/js/translated/build.js:1680 +#: templates/js/translated/build.js:1993 templates/js/translated/company.js:492 #: templates/js/translated/company.js:749 templates/js/translated/order.js:84 #: templates/js/translated/order.js:711 templates/js/translated/order.js:1177 #: templates/js/translated/order.js:1781 templates/js/translated/order.js:2138 -#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1007 -#: templates/js/translated/part.js:1088 templates/js/translated/part.js:1255 -#: templates/js/translated/stock.js:518 templates/js/translated/stock.js:683 -#: templates/js/translated/stock.js:890 templates/js/translated/stock.js:1613 -#: templates/js/translated/stock.js:2848 templates/js/translated/stock.js:2947 +#: templates/js/translated/order.js:2333 templates/js/translated/part.js:1008 +#: templates/js/translated/part.js:1089 templates/js/translated/part.js:1256 +#: templates/js/translated/stock.js:528 templates/js/translated/stock.js:693 +#: templates/js/translated/stock.js:900 templates/js/translated/stock.js:1623 +#: templates/js/translated/stock.js:2858 templates/js/translated/stock.js:2957 msgid "Part" msgstr "商品" @@ -733,8 +733,8 @@ msgstr "相关销售订单" msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:249 build/serializers.py:729 -#: templates/js/translated/build.js:1654 templates/js/translated/order.js:1769 +#: build/models.py:249 build/serializers.py:730 +#: templates/js/translated/build.js:1668 templates/js/translated/order.js:1769 msgid "Source Location" msgstr "来源地点" @@ -775,7 +775,7 @@ msgid "Build status code" msgstr "生产状态代码" #: build/models.py:287 build/serializers.py:218 order/serializers.py:272 -#: stock/models.py:622 templates/js/translated/order.js:573 +#: stock/models.py:637 templates/js/translated/order.js:573 msgid "Batch Code" msgstr "批量代码" @@ -783,7 +783,7 @@ msgstr "批量代码" msgid "Batch code for this build output" msgstr "此生产产出的批量代码" -#: build/models.py:294 order/models.py:129 part/models.py:999 +#: build/models.py:294 order/models.py:129 part/models.py:1007 #: part/templates/part/part_base.html:313 templates/js/translated/order.js:1467 msgid "Creation Date" msgstr "创建日期" @@ -797,7 +797,7 @@ msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" #: build/models.py:302 order/models.py:255 -#: templates/js/translated/build.js:2055 +#: templates/js/translated/build.js:2070 msgid "Completion Date" msgstr "完成日期:" @@ -805,7 +805,7 @@ msgstr "完成日期:" msgid "completed by" msgstr "完成人" -#: build/models.py:316 templates/js/translated/build.js:2023 +#: build/models.py:316 templates/js/translated/build.js:2038 msgid "Issued by" msgstr "发布者" @@ -816,9 +816,9 @@ msgstr "发布此生产订单的用户" #: build/models.py:325 build/templates/build/build_base.html:190 #: build/templates/build/detail.html:116 order/models.py:143 #: order/templates/order/order_base.html:170 -#: order/templates/order/sales_order_base.html:182 part/models.py:1003 +#: order/templates/order/sales_order_base.html:182 part/models.py:1011 #: report/templates/report/inventree_build_order_base.html:159 -#: templates/js/translated/build.js:2035 templates/js/translated/order.js:1005 +#: templates/js/translated/build.js:2050 templates/js/translated/order.js:1005 msgid "Responsible" msgstr "责任人" @@ -829,7 +829,7 @@ msgstr "负责此生产订单的用户" #: build/models.py:331 build/templates/build/detail.html:102 #: company/templates/company/manufacturer_part.html:102 #: company/templates/company/supplier_part.html:126 -#: part/templates/part/part_base.html:354 stock/models.py:616 +#: part/templates/part/part_base.html:354 stock/models.py:631 #: stock/templates/stock/item_base.html:352 msgid "External Link" msgstr "外部链接" @@ -839,17 +839,17 @@ msgstr "外部链接" #: company/models.py:577 company/templates/company/sidebar.html:25 #: order/models.py:147 order/models.py:845 order/models.py:1107 #: order/templates/order/po_sidebar.html:11 -#: order/templates/order/so_sidebar.html:17 part/models.py:988 -#: part/templates/part/detail.html:141 part/templates/part/part_sidebar.html:57 +#: order/templates/order/so_sidebar.html:17 part/models.py:996 +#: part/templates/part/detail.html:156 part/templates/part/part_sidebar.html:62 #: report/templates/report/inventree_build_order_base.html:173 -#: stock/forms.py:137 stock/forms.py:171 stock/models.py:688 -#: stock/models.py:2023 stock/models.py:2129 stock/serializers.py:332 +#: stock/forms.py:137 stock/forms.py:171 stock/models.py:703 +#: stock/models.py:2038 stock/models.py:2144 stock/serializers.py:332 #: stock/serializers.py:697 stock/serializers.py:795 stock/serializers.py:927 #: stock/templates/stock/stock_sidebar.html:25 #: templates/js/translated/barcode.js:58 templates/js/translated/bom.js:934 #: templates/js/translated/company.js:845 templates/js/translated/order.js:1344 #: templates/js/translated/order.js:1650 templates/js/translated/order.js:2507 -#: templates/js/translated/stock.js:1300 templates/js/translated/stock.js:1891 +#: templates/js/translated/stock.js:1310 templates/js/translated/stock.js:1901 msgid "Notes" msgstr "备注" @@ -869,69 +869,69 @@ msgstr "生产产出已完成" msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:1162 +#: build/models.py:1168 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1171 +#: build/models.py:1177 #, python-brace-format msgid "Allocated quantity ({q}) must not execed available stock quantity ({a})" msgstr "" -#: build/models.py:1181 +#: build/models.py:1187 msgid "Stock item is over-allocated" msgstr "库存物品分配过度!" -#: build/models.py:1187 order/models.py:1225 +#: build/models.py:1193 order/models.py:1225 msgid "Allocation quantity must be greater than zero" msgstr "分配数量必须大于0" -#: build/models.py:1193 +#: build/models.py:1199 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1250 +#: build/models.py:1256 msgid "Selected stock item not found in BOM" msgstr "" -#: build/models.py:1319 stock/templates/stock/item_base.html:324 -#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1951 +#: build/models.py:1325 stock/templates/stock/item_base.html:324 +#: templates/InvenTree/search.html:137 templates/js/translated/build.js:1966 #: templates/navbar.html:35 msgid "Build" msgstr "生产" -#: build/models.py:1320 +#: build/models.py:1326 msgid "Build to allocate parts" msgstr "" -#: build/models.py:1336 build/serializers.py:576 order/serializers.py:783 +#: build/models.py:1342 build/serializers.py:576 order/serializers.py:783 #: order/serializers.py:801 stock/serializers.py:404 stock/serializers.py:635 #: stock/serializers.py:753 stock/templates/stock/item_base.html:9 #: stock/templates/stock/item_base.html:23 #: stock/templates/stock/item_base.html:346 #: templates/js/translated/build.js:688 templates/js/translated/build.js:693 -#: templates/js/translated/build.js:1668 templates/js/translated/build.js:2103 +#: templates/js/translated/build.js:1682 templates/js/translated/build.js:2118 #: templates/js/translated/order.js:85 templates/js/translated/order.js:1782 #: templates/js/translated/order.js:2037 templates/js/translated/order.js:2042 #: templates/js/translated/order.js:2145 templates/js/translated/order.js:2235 -#: templates/js/translated/stock.js:519 templates/js/translated/stock.js:684 -#: templates/js/translated/stock.js:2709 +#: templates/js/translated/stock.js:529 templates/js/translated/stock.js:694 +#: templates/js/translated/stock.js:2719 msgid "Stock Item" msgstr "库存项" -#: build/models.py:1337 +#: build/models.py:1343 msgid "Source stock item" msgstr "源库存项" -#: build/models.py:1349 build/serializers.py:188 +#: build/models.py:1355 build/serializers.py:188 #: build/templates/build/build_base.html:82 -#: build/templates/build/detail.html:35 common/models.py:1317 +#: build/templates/build/detail.html:35 common/models.py:1328 #: company/forms.py:42 company/templates/company/supplier_part.html:251 #: order/models.py:836 order/models.py:1265 order/serializers.py:903 #: order/templates/order/order_wizard/match_parts.html:30 #: order/templates/order/order_wizard/select_parts.html:34 part/forms.py:144 -#: part/forms.py:160 part/forms.py:176 part/models.py:2722 -#: part/templates/part/detail.html:994 part/templates/part/detail.html:1080 +#: part/forms.py:160 part/forms.py:176 part/models.py:2730 +#: part/templates/part/detail.html:1014 part/templates/part/detail.html:1100 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_build_order_base.html:114 @@ -946,29 +946,30 @@ msgstr "源库存项" #: templates/js/translated/barcode.js:385 templates/js/translated/bom.js:778 #: templates/js/translated/build.js:376 templates/js/translated/build.js:524 #: templates/js/translated/build.js:715 templates/js/translated/build.js:912 -#: templates/js/translated/build.js:922 templates/js/translated/build.js:1298 -#: templates/js/translated/build.js:1669 +#: templates/js/translated/build.js:922 templates/js/translated/build.js:1310 +#: templates/js/translated/build.js:1683 #: templates/js/translated/model_renderers.js:99 #: templates/js/translated/order.js:101 templates/js/translated/order.js:1229 #: templates/js/translated/order.js:1783 templates/js/translated/order.js:2064 #: templates/js/translated/order.js:2152 templates/js/translated/order.js:2241 -#: templates/js/translated/order.js:2355 templates/js/translated/part.js:907 -#: templates/js/translated/part.js:1885 templates/js/translated/part.js:2008 -#: templates/js/translated/part.js:2086 templates/js/translated/stock.js:390 -#: templates/js/translated/stock.js:544 templates/js/translated/stock.js:714 -#: templates/js/translated/stock.js:2758 templates/js/translated/stock.js:2860 +#: templates/js/translated/order.js:2355 templates/js/translated/part.js:908 +#: templates/js/translated/part.js:1886 templates/js/translated/part.js:2092 +#: templates/js/translated/part.js:2126 templates/js/translated/part.js:2204 +#: templates/js/translated/stock.js:400 templates/js/translated/stock.js:554 +#: templates/js/translated/stock.js:724 templates/js/translated/stock.js:2768 +#: templates/js/translated/stock.js:2870 msgid "Quantity" msgstr "数量" -#: build/models.py:1350 +#: build/models.py:1356 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1358 +#: build/models.py:1364 msgid "Install into" msgstr "安装到" -#: build/models.py:1359 +#: build/models.py:1365 msgid "Destination stock item" msgstr "" @@ -998,7 +999,7 @@ msgstr "输入生产产出数量" #: build/serializers.py:201 build/serializers.py:596 order/models.py:280 #: order/serializers.py:267 part/serializers.py:471 part/serializers.py:836 -#: stock/models.py:456 stock/models.py:1232 stock/serializers.py:305 +#: stock/models.py:471 stock/models.py:1247 stock/serializers.py:305 msgid "Quantity must be greater than zero" msgstr "" @@ -1013,7 +1014,7 @@ msgstr "" #: build/serializers.py:225 order/serializers.py:280 order/serializers.py:907 #: stock/forms.py:78 stock/serializers.py:314 #: templates/js/translated/order.js:584 templates/js/translated/stock.js:237 -#: templates/js/translated/stock.js:391 +#: templates/js/translated/stock.js:401 msgid "Serial Numbers" msgstr "序列号" @@ -1042,12 +1043,12 @@ msgstr "" #: stock/serializers.py:1029 stock/templates/stock/item_base.html:292 #: templates/js/translated/barcode.js:384 #: templates/js/translated/barcode.js:557 templates/js/translated/build.js:700 -#: templates/js/translated/build.js:1310 templates/js/translated/order.js:611 +#: templates/js/translated/build.js:1322 templates/js/translated/order.js:611 #: templates/js/translated/order.js:2049 templates/js/translated/order.js:2160 #: templates/js/translated/order.js:2168 templates/js/translated/order.js:2249 -#: templates/js/translated/part.js:179 templates/js/translated/stock.js:520 -#: templates/js/translated/stock.js:685 templates/js/translated/stock.js:892 -#: templates/js/translated/stock.js:1763 templates/js/translated/stock.js:2650 +#: templates/js/translated/part.js:180 templates/js/translated/stock.js:530 +#: templates/js/translated/stock.js:695 templates/js/translated/stock.js:902 +#: templates/js/translated/stock.js:1773 templates/js/translated/stock.js:2660 msgid "Location" msgstr "地点" @@ -1058,10 +1059,10 @@ msgstr "" #: build/serializers.py:377 build/templates/build/build_base.html:142 #: build/templates/build/detail.html:63 order/models.py:579 #: order/serializers.py:290 stock/templates/stock/item_base.html:182 -#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2007 +#: templates/js/translated/barcode.js:140 templates/js/translated/build.js:2022 #: templates/js/translated/order.js:716 templates/js/translated/order.js:975 -#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1738 -#: templates/js/translated/stock.js:2727 templates/js/translated/stock.js:2876 +#: templates/js/translated/order.js:1459 templates/js/translated/stock.js:1748 +#: templates/js/translated/stock.js:2737 templates/js/translated/stock.js:2886 msgid "Status" msgstr "状态" @@ -1097,8 +1098,8 @@ msgstr "" msgid "No build outputs have been created for this build order" msgstr "" -#: build/serializers.py:501 build/serializers.py:550 part/models.py:2846 -#: part/models.py:3005 +#: build/serializers.py:501 build/serializers.py:550 part/models.py:2854 +#: part/models.py:3013 msgid "BOM Item" msgstr "" @@ -1135,23 +1136,31 @@ msgstr "" msgid "Allocation items must be provided" msgstr "" -#: build/serializers.py:730 +#: build/serializers.py:731 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" msgstr "" -#: build/serializers.py:735 +#: build/serializers.py:739 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:740 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:745 msgid "Interchangeable Stock" msgstr "" -#: build/serializers.py:736 +#: build/serializers.py:746 msgid "Stock items in multiple locations can be used interchangeably" msgstr "" -#: build/serializers.py:741 +#: build/serializers.py:751 msgid "Substitute Stock" msgstr "" -#: build/serializers.py:742 +#: build/serializers.py:752 msgid "Allow allocation of substitute parts" msgstr "" @@ -1226,9 +1235,9 @@ msgstr "" #: order/templates/order/order_base.html:156 #: order/templates/order/sales_order_base.html:163 #: report/templates/report/inventree_build_order_base.html:126 -#: templates/js/translated/build.js:2047 templates/js/translated/order.js:992 +#: templates/js/translated/build.js:2062 templates/js/translated/order.js:992 #: templates/js/translated/order.js:1291 templates/js/translated/order.js:1475 -#: templates/js/translated/order.js:2418 templates/js/translated/part.js:911 +#: templates/js/translated/order.js:2418 templates/js/translated/part.js:912 msgid "Target Date" msgstr "预计日期" @@ -1250,7 +1259,7 @@ msgstr "逾期" #: build/templates/build/build_base.html:163 #: build/templates/build/detail.html:68 build/templates/build/detail.html:143 #: order/templates/order/sales_order_base.html:170 -#: templates/js/translated/build.js:1993 +#: templates/js/translated/build.js:2008 #: templates/js/translated/table_filters.js:365 msgid "Completed" msgstr "已完成" @@ -1262,7 +1271,7 @@ msgstr "已完成" #: report/templates/report/inventree_build_order_base.html:136 #: report/templates/report/inventree_so_report.html:77 #: stock/templates/stock/item_base.html:286 -#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2392 +#: templates/js/translated/order.js:1414 templates/js/translated/stock.js:2402 msgid "Sales Order" msgstr "销售订单" @@ -1273,6 +1282,7 @@ msgid "Issued By" msgstr "发布者" #: build/templates/build/build_base.html:228 +#: build/templates/build/sidebar.html:12 msgid "Incomplete Outputs" msgstr "未完成输出" @@ -1311,7 +1321,7 @@ msgstr "" #: build/templates/build/detail.html:81 #: stock/templates/stock/item_base.html:310 -#: templates/js/translated/stock.js:1752 templates/js/translated/stock.js:2883 +#: templates/js/translated/stock.js:1762 templates/js/translated/stock.js:2893 #: templates/js/translated/table_filters.js:151 #: templates/js/translated/table_filters.js:238 msgid "Batch" @@ -1320,7 +1330,7 @@ msgstr "" #: build/templates/build/detail.html:127 #: order/templates/order/order_base.html:143 #: order/templates/order/sales_order_base.html:157 -#: templates/js/translated/build.js:2015 +#: templates/js/translated/build.js:2030 msgid "Created" msgstr "已创建" @@ -1340,7 +1350,7 @@ msgstr "子生产订单" msgid "Allocate Stock to Build" msgstr "为生产分配库存" -#: build/templates/build/detail.html:177 templates/js/translated/build.js:1485 +#: build/templates/build/detail.html:177 templates/js/translated/build.js:1499 msgid "Unallocate stock" msgstr "未分配库存" @@ -1431,8 +1441,8 @@ msgstr "" #: order/templates/order/po_sidebar.html:9 #: order/templates/order/purchase_order_detail.html:60 #: order/templates/order/sales_order_detail.html:107 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 -#: part/templates/part/part_sidebar.html:55 stock/templates/stock/item.html:105 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:232 +#: part/templates/part/part_sidebar.html:60 stock/templates/stock/item.html:105 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "附件" @@ -1441,27 +1451,27 @@ msgstr "附件" msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:305 build/templates/build/detail.html:481 +#: build/templates/build/detail.html:305 build/templates/build/detail.html:389 #: company/templates/company/detail.html:190 #: company/templates/company/detail.html:217 #: order/templates/order/purchase_order_detail.html:80 #: order/templates/order/purchase_order_detail.html:108 #: order/templates/order/sales_order_detail.html:127 #: order/templates/order/sales_order_detail.html:186 -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:125 +#: part/templates/part/detail.html:160 stock/templates/stock/item.html:125 #: stock/templates/stock/item.html:223 msgid "Edit Notes" msgstr "编辑备注" -#: build/templates/build/detail.html:519 +#: build/templates/build/detail.html:526 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:520 +#: build/templates/build/detail.html:527 msgid "All untracked stock items have been allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:322 +#: build/templates/build/index.html:18 part/templates/part/detail.html:337 msgid "New Build Order" msgstr "新建生产订单" @@ -1485,12 +1495,8 @@ msgstr "列表视图" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:12 -msgid "Pending Items" -msgstr "" - #: build/templates/build/sidebar.html:15 -msgid "Completed Items" +msgid "Completed Outputs" msgstr "" #: build/views.py:73 @@ -1538,760 +1544,768 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:352 +#: common/models.py:356 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:354 +#: common/models.py:358 msgid "Settings value" msgstr "" -#: common/models.py:388 +#: common/models.py:392 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:408 +#: common/models.py:412 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:419 +#: common/models.py:423 msgid "Value must be an integer value" msgstr "" -#: common/models.py:442 +#: common/models.py:446 msgid "Key string must be unique" msgstr "" -#: common/models.py:588 +#: common/models.py:592 msgid "No group" msgstr "" -#: common/models.py:630 +#: common/models.py:634 msgid "Restart required" msgstr "" -#: common/models.py:631 +#: common/models.py:635 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:638 +#: common/models.py:642 msgid "InvenTree Instance Name" msgstr "" -#: common/models.py:640 +#: common/models.py:644 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:644 +#: common/models.py:648 msgid "Use instance name" msgstr "" -#: common/models.py:645 +#: common/models.py:649 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:651 company/models.py:100 company/models.py:101 +#: common/models.py:655 company/models.py:100 company/models.py:101 msgid "Company name" msgstr "公司名称" -#: common/models.py:652 +#: common/models.py:656 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:657 +#: common/models.py:661 msgid "Base URL" msgstr "" -#: common/models.py:658 +#: common/models.py:662 msgid "Base URL for server instance" msgstr "" -#: common/models.py:664 +#: common/models.py:668 msgid "Default Currency" msgstr "" -#: common/models.py:665 +#: common/models.py:669 msgid "Default currency" msgstr "" -#: common/models.py:671 +#: common/models.py:675 msgid "Download from URL" msgstr "" -#: common/models.py:672 +#: common/models.py:676 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:678 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:682 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:679 +#: common/models.py:683 msgid "Enable barcode scanner support" msgstr "启用条形码扫描支持" -#: common/models.py:685 +#: common/models.py:689 msgid "IPN Regex" msgstr "" -#: common/models.py:686 +#: common/models.py:690 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:690 +#: common/models.py:694 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:691 +#: common/models.py:695 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:697 +#: common/models.py:701 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:698 +#: common/models.py:702 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:704 +#: common/models.py:708 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:705 +#: common/models.py:709 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:711 +#: common/models.py:715 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:712 +#: common/models.py:716 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:718 +#: common/models.py:722 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:719 +#: common/models.py:723 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:725 +#: common/models.py:729 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:726 +#: common/models.py:730 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:732 part/models.py:2541 report/models.py:187 +#: common/models.py:736 part/models.py:2549 report/models.py:187 #: templates/js/translated/table_filters.js:38 #: templates/js/translated/table_filters.js:417 msgid "Template" msgstr "模板" -#: common/models.py:733 +#: common/models.py:737 msgid "Parts are templates by default" msgstr "" -#: common/models.py:739 part/models.py:951 templates/js/translated/bom.js:1305 +#: common/models.py:743 part/models.py:959 templates/js/translated/bom.js:1305 #: templates/js/translated/table_filters.js:168 #: templates/js/translated/table_filters.js:429 msgid "Assembly" msgstr "组装" -#: common/models.py:740 +#: common/models.py:744 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:746 part/models.py:957 +#: common/models.py:750 part/models.py:965 #: templates/js/translated/table_filters.js:433 msgid "Component" msgstr "组件" -#: common/models.py:747 +#: common/models.py:751 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:753 part/models.py:968 +#: common/models.py:757 part/models.py:976 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:754 +#: common/models.py:758 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:760 part/models.py:973 +#: common/models.py:764 part/models.py:981 #: templates/js/translated/table_filters.js:441 msgid "Salable" msgstr "可销售" -#: common/models.py:761 +#: common/models.py:765 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:767 part/models.py:963 +#: common/models.py:771 part/models.py:971 #: templates/js/translated/table_filters.js:46 #: templates/js/translated/table_filters.js:100 #: templates/js/translated/table_filters.js:445 msgid "Trackable" msgstr "可追踪" -#: common/models.py:768 +#: common/models.py:772 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:774 part/models.py:983 +#: common/models.py:778 part/models.py:991 #: part/templates/part/part_base.html:147 #: templates/js/translated/table_filters.js:42 msgid "Virtual" msgstr "虚拟" -#: common/models.py:775 +#: common/models.py:779 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:781 +#: common/models.py:785 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:782 +#: common/models.py:786 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:788 +#: common/models.py:792 msgid "Show Price in Forms" msgstr "在表格中显示价格" -#: common/models.py:789 +#: common/models.py:793 msgid "Display part price in some forms" msgstr "以某些表格显示商品价格" -#: common/models.py:800 +#: common/models.py:804 msgid "Show Price in BOM" msgstr "" -#: common/models.py:801 +#: common/models.py:805 msgid "Include pricing information in BOM tables" msgstr "" -#: common/models.py:812 +#: common/models.py:816 msgid "Show Price History" msgstr "" -#: common/models.py:813 +#: common/models.py:817 msgid "Display historical pricing for Part" msgstr "" -#: common/models.py:819 +#: common/models.py:823 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:820 +#: common/models.py:824 msgid "Display related parts for a part" msgstr "" -#: common/models.py:826 +#: common/models.py:830 msgid "Create initial stock" msgstr "创建初始库存" -#: common/models.py:827 +#: common/models.py:831 msgid "Create initial stock on part creation" msgstr "" -#: common/models.py:833 +#: common/models.py:837 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:834 +#: common/models.py:838 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:840 +#: common/models.py:844 msgid "Internal Price as BOM-Price" msgstr "内部价格为BOM价格" -#: common/models.py:841 +#: common/models.py:845 msgid "Use the internal price (if set) in BOM-price calculations" msgstr "在 BOM价格计算中使用内部价格(如设置)" -#: common/models.py:847 +#: common/models.py:851 msgid "Part Name Display Format" msgstr "" -#: common/models.py:848 +#: common/models.py:852 msgid "Format to display the part name" msgstr "" -#: common/models.py:855 +#: common/models.py:859 msgid "Enable Reports" msgstr "" -#: common/models.py:856 +#: common/models.py:860 msgid "Enable generation of reports" msgstr "" -#: common/models.py:862 templates/stats.html:25 +#: common/models.py:866 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:863 +#: common/models.py:867 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:869 +#: common/models.py:873 msgid "Page Size" msgstr "页面大小" -#: common/models.py:870 +#: common/models.py:874 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:880 +#: common/models.py:884 msgid "Test Reports" msgstr "测试报表" -#: common/models.py:881 +#: common/models.py:885 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:887 +#: common/models.py:891 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:888 +#: common/models.py:892 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:894 +#: common/models.py:898 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:895 +#: common/models.py:899 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:901 +#: common/models.py:905 msgid "Stock Stale Time" msgstr "" -#: common/models.py:902 +#: common/models.py:906 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:904 +#: common/models.py:908 msgid "days" msgstr "天" -#: common/models.py:909 +#: common/models.py:913 msgid "Build Expired Stock" msgstr "" -#: common/models.py:910 +#: common/models.py:914 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:916 +#: common/models.py:920 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:917 +#: common/models.py:921 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:923 +#: common/models.py:927 msgid "Build Order Reference Prefix" msgstr "生产订单参考前缀" -#: common/models.py:924 +#: common/models.py:928 msgid "Prefix value for build order reference" msgstr "" -#: common/models.py:929 +#: common/models.py:933 msgid "Build Order Reference Regex" msgstr "" -#: common/models.py:930 +#: common/models.py:934 msgid "Regular expression pattern for matching build order reference" msgstr "" -#: common/models.py:934 +#: common/models.py:938 msgid "Sales Order Reference Prefix" msgstr "" -#: common/models.py:935 +#: common/models.py:939 msgid "Prefix value for sales order reference" msgstr "" -#: common/models.py:940 +#: common/models.py:944 msgid "Purchase Order Reference Prefix" msgstr "" -#: common/models.py:941 +#: common/models.py:945 msgid "Prefix value for purchase order reference" msgstr "" -#: common/models.py:947 +#: common/models.py:951 msgid "Enable password forgot" msgstr "" -#: common/models.py:948 +#: common/models.py:952 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:953 +#: common/models.py:957 msgid "Enable registration" msgstr "" -#: common/models.py:954 +#: common/models.py:958 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:959 +#: common/models.py:963 msgid "Enable SSO" msgstr "" -#: common/models.py:960 +#: common/models.py:964 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:965 +#: common/models.py:969 msgid "Email required" msgstr "" -#: common/models.py:966 +#: common/models.py:970 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:971 +#: common/models.py:975 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:972 +#: common/models.py:976 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:977 +#: common/models.py:981 msgid "Mail twice" msgstr "" -#: common/models.py:978 +#: common/models.py:982 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:983 +#: common/models.py:987 msgid "Password twice" msgstr "" -#: common/models.py:984 +#: common/models.py:988 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:989 +#: common/models.py:993 msgid "Group on signup" msgstr "" -#: common/models.py:990 +#: common/models.py:994 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:995 +#: common/models.py:999 msgid "Enforce MFA" msgstr "" -#: common/models.py:996 +#: common/models.py:1000 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1003 +#: common/models.py:1007 msgid "Enable URL integration" msgstr "" -#: common/models.py:1004 +#: common/models.py:1008 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1010 +#: common/models.py:1014 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1011 +#: common/models.py:1015 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1017 +#: common/models.py:1021 msgid "Enable app integration" msgstr "" -#: common/models.py:1018 +#: common/models.py:1022 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1024 +#: common/models.py:1028 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1025 +#: common/models.py:1029 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1031 +#: common/models.py:1035 msgid "Enable event integration" msgstr "" -#: common/models.py:1032 +#: common/models.py:1036 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1047 common/models.py:1270 +#: common/models.py:1051 common/models.py:1281 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1078 +#: common/models.py:1082 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1079 +#: common/models.py:1083 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1084 +#: common/models.py:1088 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1085 +#: common/models.py:1089 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1090 +#: common/models.py:1094 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:1091 +#: common/models.py:1095 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:1096 +#: common/models.py:1100 msgid "Recent Part Count" msgstr "" -#: common/models.py:1097 +#: common/models.py:1101 msgid "Number of recent parts to display on index page" msgstr "" -#: common/models.py:1103 +#: common/models.py:1107 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1104 +#: common/models.py:1108 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1109 +#: common/models.py:1113 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1110 +#: common/models.py:1114 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1115 +#: common/models.py:1119 msgid "Recent Stock Count" msgstr "" -#: common/models.py:1116 +#: common/models.py:1120 msgid "Number of recent stock items to display on index page" msgstr "" -#: common/models.py:1121 +#: common/models.py:1125 msgid "Show low stock" msgstr "" -#: common/models.py:1122 +#: common/models.py:1126 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1127 +#: common/models.py:1131 msgid "Show depleted stock" msgstr "" -#: common/models.py:1128 +#: common/models.py:1132 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1133 +#: common/models.py:1137 msgid "Show needed stock" msgstr "" -#: common/models.py:1134 +#: common/models.py:1138 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1139 +#: common/models.py:1143 msgid "Show expired stock" msgstr "" -#: common/models.py:1140 +#: common/models.py:1144 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1145 +#: common/models.py:1149 msgid "Show stale stock" msgstr "" -#: common/models.py:1146 +#: common/models.py:1150 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1151 +#: common/models.py:1155 msgid "Show pending builds" msgstr "" -#: common/models.py:1152 +#: common/models.py:1156 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1157 +#: common/models.py:1161 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:1158 +#: common/models.py:1162 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:1163 +#: common/models.py:1167 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1164 +#: common/models.py:1168 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1169 +#: common/models.py:1173 msgid "Show overdue POs" msgstr "" -#: common/models.py:1170 +#: common/models.py:1174 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1175 +#: common/models.py:1179 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1176 +#: common/models.py:1180 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1181 +#: common/models.py:1185 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1182 +#: common/models.py:1186 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1188 +#: common/models.py:1192 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:1189 +#: common/models.py:1193 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:1195 +#: common/models.py:1199 msgid "Inline report display" msgstr "" -#: common/models.py:1196 +#: common/models.py:1200 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:1202 +#: common/models.py:1206 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:1203 +#: common/models.py:1207 msgid "Number of results to show in search preview window" msgstr "搜索预览窗口中显示的结果数" -#: common/models.py:1209 +#: common/models.py:1213 msgid "Search Show Stock" msgstr "" -#: common/models.py:1210 +#: common/models.py:1214 msgid "Display stock levels in search preview window" msgstr "" -#: common/models.py:1216 +#: common/models.py:1220 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1217 +#: common/models.py:1221 msgid "Hide inactive parts in search preview window" msgstr "" -#: common/models.py:1223 +#: common/models.py:1227 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:1224 +#: common/models.py:1228 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:1230 +#: common/models.py:1234 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:1231 +#: common/models.py:1235 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:1237 +#: common/models.py:1241 msgid "Fixed Navbar" msgstr "" -#: common/models.py:1238 +#: common/models.py:1242 msgid "InvenTree navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:1244 +#: common/models.py:1248 msgid "Date Format" msgstr "" -#: common/models.py:1245 +#: common/models.py:1249 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:1318 company/forms.py:43 +#: common/models.py:1263 part/templates/part/detail.html:40 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:1264 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:1329 company/forms.py:43 msgid "Price break quantity" msgstr "" -#: common/models.py:1325 company/serializers.py:264 +#: common/models.py:1336 company/serializers.py:264 #: company/templates/company/supplier_part.html:256 -#: templates/js/translated/part.js:938 templates/js/translated/part.js:1890 +#: templates/js/translated/part.js:939 templates/js/translated/part.js:1891 msgid "Price" msgstr "价格" -#: common/models.py:1326 +#: common/models.py:1337 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:1483 common/models.py:1622 +#: common/models.py:1494 common/models.py:1633 msgid "Endpoint" msgstr "" -#: common/models.py:1484 +#: common/models.py:1495 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:1493 +#: common/models.py:1504 msgid "Name for this webhook" msgstr "" -#: common/models.py:1498 part/models.py:978 plugin/models.py:46 +#: common/models.py:1509 part/models.py:986 plugin/models.py:46 #: templates/js/translated/table_filters.js:34 #: templates/js/translated/table_filters.js:96 #: templates/js/translated/table_filters.js:290 @@ -2299,67 +2313,67 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:1499 +#: common/models.py:1510 msgid "Is this webhook active" msgstr "" -#: common/models.py:1513 +#: common/models.py:1524 msgid "Token" msgstr "" -#: common/models.py:1514 +#: common/models.py:1525 msgid "Token for access" msgstr "" -#: common/models.py:1521 +#: common/models.py:1532 msgid "Secret" msgstr "" -#: common/models.py:1522 +#: common/models.py:1533 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:1589 +#: common/models.py:1600 msgid "Message ID" msgstr "" -#: common/models.py:1590 +#: common/models.py:1601 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:1598 +#: common/models.py:1609 msgid "Host" msgstr "" -#: common/models.py:1599 +#: common/models.py:1610 msgid "Host from which this message was received" msgstr "" -#: common/models.py:1606 +#: common/models.py:1617 msgid "Header" msgstr "" -#: common/models.py:1607 +#: common/models.py:1618 msgid "Header of this message" msgstr "" -#: common/models.py:1613 +#: common/models.py:1624 msgid "Body" msgstr "" -#: common/models.py:1614 +#: common/models.py:1625 msgid "Body of this message" msgstr "" -#: common/models.py:1623 +#: common/models.py:1634 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:1628 +#: common/models.py:1639 msgid "Worked on" msgstr "" -#: common/models.py:1629 +#: common/models.py:1640 msgid "Was the work on this message finished?" msgstr "" @@ -2463,7 +2477,7 @@ msgstr "" msgid "Link to external company information" msgstr "链接到外部公司信息" -#: company/models.py:139 part/models.py:870 +#: company/models.py:139 part/models.py:878 msgid "Image" msgstr "图片" @@ -2500,7 +2514,7 @@ msgstr "货币" msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:320 company/models.py:535 stock/models.py:560 +#: company/models.py:320 company/models.py:535 stock/models.py:575 #: stock/templates/stock/item_base.html:137 templates/js/translated/bom.js:541 msgid "Base Part" msgstr "" @@ -2515,12 +2529,12 @@ msgstr "选择商品" #: stock/templates/stock/item_base.html:359 #: templates/js/translated/company.js:333 #: templates/js/translated/company.js:517 -#: templates/js/translated/company.js:800 templates/js/translated/part.js:234 +#: templates/js/translated/company.js:800 templates/js/translated/part.js:235 #: templates/js/translated/table_filters.js:384 msgid "Manufacturer" msgstr "制造商" -#: company/models.py:336 templates/js/translated/part.js:235 +#: company/models.py:336 templates/js/translated/part.js:236 msgid "Select manufacturer" msgstr "选择制造商" @@ -2528,11 +2542,11 @@ msgstr "选择制造商" #: company/templates/company/supplier_part.html:105 #: templates/js/translated/company.js:533 #: templates/js/translated/company.js:818 templates/js/translated/order.js:1211 -#: templates/js/translated/part.js:245 templates/js/translated/part.js:896 +#: templates/js/translated/part.js:246 templates/js/translated/part.js:897 msgid "MPN" msgstr "MPN" -#: company/models.py:343 templates/js/translated/part.js:246 +#: company/models.py:343 templates/js/translated/part.js:247 msgid "Manufacturer Part Number" msgstr "制造商商品编号" @@ -2557,8 +2571,8 @@ msgstr "参数名称" #: company/models.py:422 #: report/templates/report/inventree_test_report_base.html:95 -#: stock/models.py:2116 templates/js/translated/company.js:647 -#: templates/js/translated/part.js:716 templates/js/translated/stock.js:1287 +#: stock/models.py:2131 templates/js/translated/company.js:647 +#: templates/js/translated/part.js:717 templates/js/translated/stock.js:1297 msgid "Value" msgstr "数值" @@ -2566,10 +2580,10 @@ msgstr "数值" msgid "Parameter value" msgstr "参数值" -#: company/models.py:429 part/models.py:945 part/models.py:2509 +#: company/models.py:429 part/models.py:953 part/models.py:2517 #: part/templates/part/part_base.html:288 #: templates/InvenTree/settings/settings.html:324 -#: templates/js/translated/company.js:653 templates/js/translated/part.js:722 +#: templates/js/translated/company.js:653 templates/js/translated/part.js:723 msgid "Units" msgstr "单位" @@ -2588,22 +2602,22 @@ msgstr "" #: part/bom.py:265 stock/templates/stock/item_base.html:376 #: templates/js/translated/company.js:337 #: templates/js/translated/company.js:774 templates/js/translated/order.js:958 -#: templates/js/translated/part.js:215 templates/js/translated/part.js:864 +#: templates/js/translated/part.js:216 templates/js/translated/part.js:865 #: templates/js/translated/table_filters.js:388 msgid "Supplier" msgstr "供应商" -#: company/models.py:546 templates/js/translated/part.js:216 +#: company/models.py:546 templates/js/translated/part.js:217 msgid "Select supplier" msgstr "选择供应商" #: company/models.py:551 company/templates/company/supplier_part.html:91 #: part/bom.py:238 part/bom.py:266 templates/js/translated/order.js:1198 -#: templates/js/translated/part.js:226 templates/js/translated/part.js:882 +#: templates/js/translated/part.js:227 templates/js/translated/part.js:883 msgid "SKU" msgstr "SKU" -#: company/models.py:552 templates/js/translated/part.js:227 +#: company/models.py:552 templates/js/translated/part.js:228 msgid "Supplier stock keeping unit" msgstr "" @@ -2620,23 +2634,23 @@ msgid "Supplier part description" msgstr "供应商商品描述" #: company/models.py:576 company/templates/company/supplier_part.html:119 -#: part/models.py:2734 part/templates/part/upload_bom.html:59 +#: part/models.py:2742 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_po_report.html:93 #: report/templates/report/inventree_so_report.html:93 stock/serializers.py:409 msgid "Note" msgstr "备注" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "base cost" msgstr "" -#: company/models.py:580 part/models.py:1819 +#: company/models.py:580 part/models.py:1827 msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" #: company/models.py:582 company/templates/company/supplier_part.html:112 -#: stock/models.py:584 stock/templates/stock/item_base.html:317 -#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1887 +#: stock/models.py:599 stock/templates/stock/item_base.html:317 +#: templates/js/translated/company.js:850 templates/js/translated/stock.js:1897 msgid "Packaging" msgstr "打包" @@ -2644,7 +2658,7 @@ msgstr "打包" msgid "Part packaging" msgstr "商品打包" -#: company/models.py:584 part/models.py:1821 +#: company/models.py:584 part/models.py:1829 msgid "multiple" msgstr "" @@ -2704,11 +2718,11 @@ msgid "Download image from URL" msgstr "从 URL 下载图片" #: company/templates/company/company_base.html:83 order/models.py:574 -#: order/templates/order/sales_order_base.html:115 stock/models.py:603 -#: stock/models.py:604 stock/serializers.py:683 +#: order/templates/order/sales_order_base.html:115 stock/models.py:618 +#: stock/models.py:619 stock/serializers.py:683 #: stock/templates/stock/item_base.html:269 #: templates/js/translated/company.js:329 templates/js/translated/order.js:1436 -#: templates/js/translated/stock.js:2691 +#: templates/js/translated/stock.js:2701 #: templates/js/translated/table_filters.js:392 msgid "Customer" msgstr "客户" @@ -2739,7 +2753,7 @@ msgstr "创建新的供应商商品" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:118 -#: part/templates/part/detail.html:360 +#: part/templates/part/detail.html:375 msgid "New Supplier Part" msgstr "新建供应商商品" @@ -2747,8 +2761,8 @@ msgstr "新建供应商商品" #: company/templates/company/detail.html:79 #: company/templates/company/manufacturer_part.html:127 #: company/templates/company/manufacturer_part.html:156 -#: part/templates/part/category.html:168 part/templates/part/detail.html:369 -#: part/templates/part/detail.html:398 +#: part/templates/part/category.html:168 part/templates/part/detail.html:384 +#: part/templates/part/detail.html:413 msgid "Options" msgstr "选项" @@ -2776,7 +2790,7 @@ msgstr "制造商商品" msgid "Create new manufacturer part" msgstr "新建制造商商品" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:388 +#: company/templates/company/detail.html:67 part/templates/part/detail.html:403 msgid "New Manufacturer Part" msgstr "新建制造商商品" @@ -2790,7 +2804,7 @@ msgstr "供货商库存" #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:80 part/templates/part/part_sidebar.html:40 +#: part/templates/part/detail.html:95 part/templates/part/part_sidebar.html:40 #: templates/InvenTree/index.html:252 templates/InvenTree/search.html:197 #: templates/InvenTree/settings/sidebar.html:45 templates/navbar.html:47 #: users/models.py:45 @@ -2812,7 +2826,7 @@ msgstr "新建采购订单" #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:103 part/templates/part/part_sidebar.html:44 +#: part/templates/part/detail.html:118 part/templates/part/part_sidebar.html:44 #: templates/InvenTree/index.html:283 templates/InvenTree/search.html:217 #: templates/InvenTree/settings/sidebar.html:47 templates/navbar.html:58 #: users/models.py:46 @@ -2830,7 +2844,7 @@ msgid "New Sales Order" msgstr "新建销售订单" #: company/templates/company/detail.html:168 -#: templates/js/translated/build.js:1282 +#: templates/js/translated/build.js:1294 msgid "Assigned Stock" msgstr "" @@ -2840,13 +2854,13 @@ msgstr "公司备注" #: company/templates/company/detail.html:380 #: company/templates/company/manufacturer_part.html:215 -#: part/templates/part/detail.html:442 +#: part/templates/part/detail.html:462 msgid "Delete Supplier Parts?" msgstr "删除供应商商品?" #: company/templates/company/detail.html:381 #: company/templates/company/manufacturer_part.html:216 -#: part/templates/part/detail.html:443 +#: part/templates/part/detail.html:463 msgid "All selected supplier parts will be deleted" msgstr "删除所有选定的供应商商品" @@ -2863,7 +2877,7 @@ msgstr "制造商" #: company/templates/company/manufacturer_part.html:35 #: company/templates/company/supplier_part.html:34 #: company/templates/company/supplier_part.html:159 -#: part/templates/part/detail.html:83 part/templates/part/part_base.html:76 +#: part/templates/part/detail.html:98 part/templates/part/part_base.html:76 msgid "Order part" msgstr "订购商品" @@ -2890,14 +2904,14 @@ msgid "Suppliers" msgstr "供应商" #: company/templates/company/manufacturer_part.html:129 -#: part/templates/part/detail.html:371 +#: part/templates/part/detail.html:386 msgid "Delete supplier parts" msgstr "删除供应商商品" #: company/templates/company/manufacturer_part.html:129 #: company/templates/company/manufacturer_part.html:158 #: company/templates/company/manufacturer_part.html:254 -#: part/templates/part/detail.html:371 part/templates/part/detail.html:400 +#: part/templates/part/detail.html:386 part/templates/part/detail.html:415 #: templates/js/translated/company.js:426 templates/js/translated/helpers.js:31 #: users/models.py:217 msgid "Delete" @@ -2906,12 +2920,12 @@ msgstr "删除" #: company/templates/company/manufacturer_part.html:143 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:17 -#: part/templates/part/detail.html:191 part/templates/part/part_sidebar.html:9 +#: part/templates/part/detail.html:206 part/templates/part/part_sidebar.html:9 msgid "Parameters" msgstr "参数" #: company/templates/company/manufacturer_part.html:147 -#: part/templates/part/detail.html:196 +#: part/templates/part/detail.html:211 #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part.html:66 msgid "New Parameter" @@ -2922,7 +2936,7 @@ msgid "Delete parameters" msgstr "删除参数" #: company/templates/company/manufacturer_part.html:191 -#: part/templates/part/detail.html:894 +#: part/templates/part/detail.html:914 msgid "Add Parameter" msgstr "添加参数" @@ -2951,9 +2965,9 @@ msgid "Assigned Stock Items" msgstr "" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:568 +#: company/templates/company/supplier_part.html:24 stock/models.py:583 #: stock/templates/stock/item_base.html:381 -#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1844 +#: templates/js/translated/company.js:790 templates/js/translated/stock.js:1854 msgid "Supplier Part" msgstr "供应商商品" @@ -2979,7 +2993,7 @@ msgstr "" #: company/templates/company/supplier_part.html:142 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:166 -#: templates/js/translated/stock.js:367 +#: templates/js/translated/stock.js:377 msgid "New Stock Item" msgstr "" @@ -2989,7 +3003,7 @@ msgid "Supplier Part Orders" msgstr "供应商商品订单" #: company/templates/company/supplier_part.html:160 -#: part/templates/part/detail.html:84 +#: part/templates/part/detail.html:99 msgid "Order Part" msgstr "订购商品" @@ -3030,10 +3044,10 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:150 #: templates/InvenTree/settings/sidebar.html:41 -#: templates/js/translated/bom.js:553 templates/js/translated/part.js:496 -#: templates/js/translated/part.js:631 templates/js/translated/part.js:1148 -#: templates/js/translated/part.js:1309 templates/js/translated/stock.js:891 -#: templates/js/translated/stock.js:1667 templates/navbar.html:28 +#: templates/js/translated/bom.js:553 templates/js/translated/part.js:497 +#: templates/js/translated/part.js:632 templates/js/translated/part.js:1149 +#: templates/js/translated/part.js:1310 templates/js/translated/stock.js:901 +#: templates/js/translated/stock.js:1677 templates/navbar.html:28 msgid "Stock" msgstr "库存" @@ -3056,7 +3070,7 @@ msgstr "定价" #: stock/templates/stock/location.html:150 #: stock/templates/stock/location.html:162 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2597 +#: templates/InvenTree/search.html:152 templates/js/translated/stock.js:2607 #: templates/stats.html:105 templates/stats.html:114 users/models.py:43 msgid "Stock Items" msgstr "库存项" @@ -3320,7 +3334,7 @@ msgid "Supplier part must match supplier" msgstr "" #: order/models.py:891 order/models.py:982 order/models.py:1078 -#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2359 +#: templates/js/translated/order.js:2025 templates/js/translated/stock.js:2369 msgid "Order" msgstr "" @@ -3328,8 +3342,8 @@ msgstr "" #: order/templates/order/order_base.html:18 #: report/templates/report/inventree_po_report.html:77 #: stock/templates/stock/item_base.html:331 -#: templates/js/translated/order.js:936 templates/js/translated/part.js:839 -#: templates/js/translated/stock.js:1821 templates/js/translated/stock.js:2672 +#: templates/js/translated/order.js:936 templates/js/translated/part.js:840 +#: templates/js/translated/stock.js:1831 templates/js/translated/stock.js:2682 msgid "Purchase Order" msgstr "" @@ -3339,7 +3353,7 @@ msgstr "供应商商品" #: order/models.py:920 order/templates/order/order_base.html:163 #: templates/js/translated/order.js:714 templates/js/translated/order.js:1313 -#: templates/js/translated/part.js:933 templates/js/translated/part.js:960 +#: templates/js/translated/part.js:934 templates/js/translated/part.js:961 #: templates/js/translated/table_filters.js:312 msgid "Received" msgstr "" @@ -3348,9 +3362,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:697 +#: order/models.py:928 part/templates/part/prices.html:176 stock/models.py:712 #: stock/serializers.py:170 stock/templates/stock/item_base.html:338 -#: templates/js/translated/stock.js:1875 +#: templates/js/translated/stock.js:1885 msgid "Purchase Price" msgstr "采购价格" @@ -3606,7 +3620,7 @@ msgstr "" #: order/templates/order/order_base.html:94 #: order/templates/order/sales_order_base.html:89 -#: templates/js/translated/stock.js:2415 +#: templates/js/translated/stock.js:2425 msgid "Order Status" msgstr "" @@ -3679,9 +3693,9 @@ msgstr "选择供应商商品" #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 #: templates/js/translated/bom.js:76 templates/js/translated/build.js:381 -#: templates/js/translated/build.js:529 templates/js/translated/build.js:1558 +#: templates/js/translated/build.js:529 templates/js/translated/build.js:1572 #: templates/js/translated/order.js:662 templates/js/translated/order.js:1693 -#: templates/js/translated/stock.js:557 templates/js/translated/stock.js:725 +#: templates/js/translated/stock.js:567 templates/js/translated/stock.js:735 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "移除行" @@ -3855,7 +3869,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:48 -#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1466 +#: templates/js/translated/bom.js:943 templates/js/translated/build.js:1480 msgid "Actions" msgstr "" @@ -3930,35 +3944,51 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/api.py:502 +#: part/api.py:491 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:511 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:529 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:561 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:641 msgid "Valid" msgstr "" -#: part/api.py:503 +#: part/api.py:642 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:508 +#: part/api.py:647 msgid "This option must be selected" msgstr "" -#: part/api.py:866 +#: part/api.py:1005 msgid "Must be greater than zero" msgstr "必须大于0" -#: part/api.py:870 +#: part/api.py:1009 msgid "Must be a valid quantity" msgstr "必须是有效的数量" -#: part/api.py:885 +#: part/api.py:1024 msgid "Specify location for initial part stock" msgstr "指定初始初始商品仓储地点" -#: part/api.py:916 part/api.py:920 part/api.py:935 part/api.py:939 +#: part/api.py:1055 part/api.py:1059 part/api.py:1074 part/api.py:1078 msgid "This field is required" msgstr "此字段为必填" -#: part/bom.py:125 part/models.py:83 part/models.py:879 +#: part/bom.py:125 part/models.py:112 part/models.py:887 #: part/templates/part/category.html:108 part/templates/part/part_base.html:338 msgid "Default Location" msgstr "默认仓储地点" @@ -3972,7 +4002,7 @@ msgid "Available Stock" msgstr "可用库存" #: part/bom.py:128 part/templates/part/part_base.html:203 -#: templates/js/translated/part.js:1324 +#: templates/js/translated/part.js:1325 msgid "On Order" msgstr "" @@ -3992,448 +4022,448 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:84 +#: part/models.py:113 msgid "Default location for parts in this category" msgstr "此类别商品的默认仓储地点" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords" msgstr "" -#: part/models.py:87 +#: part/models.py:116 msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:97 part/models.py:2585 part/templates/part/category.html:15 +#: part/models.py:126 part/models.py:2593 part/templates/part/category.html:15 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" -#: part/models.py:98 part/templates/part/category.html:128 +#: part/models.py:127 part/templates/part/category.html:128 #: templates/InvenTree/search.html:95 templates/stats.html:96 #: users/models.py:40 msgid "Part Categories" msgstr "商品类别" -#: part/models.py:360 part/templates/part/cat_link.html:3 +#: part/models.py:368 part/templates/part/cat_link.html:3 #: part/templates/part/category.html:17 part/templates/part/category.html:133 #: part/templates/part/category.html:153 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:85 templates/InvenTree/search.html:82 #: templates/InvenTree/settings/sidebar.html:37 -#: templates/js/translated/part.js:1686 templates/navbar.html:21 +#: templates/js/translated/part.js:1687 templates/navbar.html:21 #: templates/stats.html:92 templates/stats.html:101 users/models.py:41 msgid "Parts" msgstr "商品" -#: part/models.py:452 +#: part/models.py:460 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:532 part/models.py:544 +#: part/models.py:540 part/models.py:552 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" -#: part/models.py:674 +#: part/models.py:682 msgid "Next available serial numbers are" msgstr "" -#: part/models.py:678 +#: part/models.py:686 msgid "Next available serial number is" msgstr "" -#: part/models.py:683 +#: part/models.py:691 msgid "Most recent serial number is" msgstr "" -#: part/models.py:778 +#: part/models.py:786 msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:803 part/models.py:2638 +#: part/models.py:811 part/models.py:2646 msgid "Part name" msgstr "商品名称" -#: part/models.py:810 +#: part/models.py:818 msgid "Is Template" msgstr "" -#: part/models.py:811 +#: part/models.py:819 msgid "Is this part a template part?" msgstr "" -#: part/models.py:821 +#: part/models.py:829 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:822 +#: part/models.py:830 msgid "Variant Of" msgstr "" -#: part/models.py:828 +#: part/models.py:836 msgid "Part description" msgstr "商品描述" -#: part/models.py:833 part/templates/part/category.html:86 +#: part/models.py:841 part/templates/part/category.html:86 #: part/templates/part/part_base.html:302 msgid "Keywords" msgstr "关键词" -#: part/models.py:834 +#: part/models.py:842 msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:841 part/models.py:2335 part/models.py:2584 +#: part/models.py:849 part/models.py:2343 part/models.py:2592 #: part/templates/part/part_base.html:265 #: part/templates/part/set_category.html:15 #: templates/InvenTree/settings/settings.html:223 -#: templates/js/translated/part.js:1291 +#: templates/js/translated/part.js:1292 msgid "Category" msgstr "类别" -#: part/models.py:842 +#: part/models.py:850 msgid "Part category" msgstr "商品类别" -#: part/models.py:847 part/templates/part/part_base.html:274 -#: templates/js/translated/part.js:619 templates/js/translated/part.js:1244 -#: templates/js/translated/stock.js:1639 +#: part/models.py:855 part/templates/part/part_base.html:274 +#: templates/js/translated/part.js:620 templates/js/translated/part.js:1245 +#: templates/js/translated/stock.js:1649 msgid "IPN" msgstr "" -#: part/models.py:848 +#: part/models.py:856 msgid "Internal Part Number" msgstr "内部商品编号" -#: part/models.py:854 +#: part/models.py:862 msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:855 part/templates/part/part_base.html:281 -#: report/models.py:200 templates/js/translated/part.js:623 +#: part/models.py:863 part/templates/part/part_base.html:281 +#: report/models.py:200 templates/js/translated/part.js:624 msgid "Revision" msgstr "" -#: part/models.py:877 +#: part/models.py:885 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:924 part/templates/part/part_base.html:347 +#: part/models.py:932 part/templates/part/part_base.html:347 msgid "Default Supplier" msgstr "" -#: part/models.py:925 +#: part/models.py:933 msgid "Default supplier part" msgstr "默认供应商商品" -#: part/models.py:932 +#: part/models.py:940 msgid "Default Expiry" msgstr "" -#: part/models.py:933 +#: part/models.py:941 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:938 part/templates/part/part_base.html:196 +#: part/models.py:946 part/templates/part/part_base.html:196 msgid "Minimum Stock" msgstr "最低库存" -#: part/models.py:939 +#: part/models.py:947 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:946 +#: part/models.py:954 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:952 +#: part/models.py:960 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:958 +#: part/models.py:966 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:964 +#: part/models.py:972 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:969 +#: part/models.py:977 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:974 +#: part/models.py:982 msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:979 +#: part/models.py:987 msgid "Is this part active?" msgstr "" -#: part/models.py:984 +#: part/models.py:992 msgid "Is this a virtual part, such as a software product or license?" msgstr "这是一个虚拟商品,如软件产品或许可证吗?" -#: part/models.py:989 +#: part/models.py:997 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "BOM checksum" msgstr "" -#: part/models.py:992 +#: part/models.py:1000 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:995 +#: part/models.py:1003 msgid "BOM checked by" msgstr "" -#: part/models.py:997 +#: part/models.py:1005 msgid "BOM checked date" msgstr "" -#: part/models.py:1001 +#: part/models.py:1009 msgid "Creation User" msgstr "新建用户" -#: part/models.py:1821 +#: part/models.py:1829 msgid "Sell multiple" msgstr "" -#: part/models.py:2385 +#: part/models.py:2393 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:2402 +#: part/models.py:2410 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:2422 templates/js/translated/part.js:1737 -#: templates/js/translated/stock.js:1267 +#: part/models.py:2430 templates/js/translated/part.js:1738 +#: templates/js/translated/stock.js:1277 msgid "Test Name" msgstr "" -#: part/models.py:2423 +#: part/models.py:2431 msgid "Enter a name for the test" msgstr "" -#: part/models.py:2428 +#: part/models.py:2436 msgid "Test Description" msgstr "" -#: part/models.py:2429 +#: part/models.py:2437 msgid "Enter description for this test" msgstr "" -#: part/models.py:2434 templates/js/translated/part.js:1746 +#: part/models.py:2442 templates/js/translated/part.js:1747 #: templates/js/translated/table_filters.js:276 msgid "Required" msgstr "" -#: part/models.py:2435 +#: part/models.py:2443 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:2440 templates/js/translated/part.js:1754 +#: part/models.py:2448 templates/js/translated/part.js:1755 msgid "Requires Value" msgstr "" -#: part/models.py:2441 +#: part/models.py:2449 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:2446 templates/js/translated/part.js:1761 +#: part/models.py:2454 templates/js/translated/part.js:1762 msgid "Requires Attachment" msgstr "" -#: part/models.py:2447 +#: part/models.py:2455 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:2458 +#: part/models.py:2466 #, python-brace-format msgid "Illegal character in template name ({c})" msgstr "" -#: part/models.py:2494 +#: part/models.py:2502 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:2502 +#: part/models.py:2510 msgid "Parameter Name" msgstr "" -#: part/models.py:2509 +#: part/models.py:2517 msgid "Parameter Units" msgstr "" -#: part/models.py:2539 +#: part/models.py:2547 msgid "Parent Part" msgstr "" -#: part/models.py:2541 part/models.py:2590 part/models.py:2591 +#: part/models.py:2549 part/models.py:2598 part/models.py:2599 #: templates/InvenTree/settings/settings.html:218 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Data" msgstr "" -#: part/models.py:2543 +#: part/models.py:2551 msgid "Parameter Value" msgstr "" -#: part/models.py:2595 templates/InvenTree/settings/settings.html:227 +#: part/models.py:2603 templates/InvenTree/settings/settings.html:227 msgid "Default Value" msgstr "默认值" -#: part/models.py:2596 +#: part/models.py:2604 msgid "Default Parameter Value" msgstr "" -#: part/models.py:2630 +#: part/models.py:2638 msgid "Part ID or part name" msgstr "" -#: part/models.py:2633 templates/js/translated/model_renderers.js:182 +#: part/models.py:2641 templates/js/translated/model_renderers.js:182 msgid "Part ID" msgstr "商品ID" -#: part/models.py:2634 +#: part/models.py:2642 msgid "Unique part ID value" msgstr "" -#: part/models.py:2637 +#: part/models.py:2645 msgid "Part Name" msgstr "" -#: part/models.py:2641 +#: part/models.py:2649 msgid "Part IPN" msgstr "" -#: part/models.py:2642 +#: part/models.py:2650 msgid "Part IPN value" msgstr "" -#: part/models.py:2645 +#: part/models.py:2653 msgid "Level" msgstr "" -#: part/models.py:2646 +#: part/models.py:2654 msgid "BOM level" msgstr "" -#: part/models.py:2707 +#: part/models.py:2715 msgid "Select parent part" msgstr "" -#: part/models.py:2715 +#: part/models.py:2723 msgid "Sub part" msgstr "" -#: part/models.py:2716 +#: part/models.py:2724 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:2722 +#: part/models.py:2730 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:2724 part/templates/part/upload_bom.html:58 +#: part/models.py:2732 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:789 templates/js/translated/bom.js:863 #: templates/js/translated/table_filters.js:92 msgid "Optional" msgstr "可选项" -#: part/models.py:2724 +#: part/models.py:2732 msgid "This BOM item is optional" msgstr "" -#: part/models.py:2727 part/templates/part/upload_bom.html:55 +#: part/models.py:2735 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:2728 +#: part/models.py:2736 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:2731 +#: part/models.py:2739 msgid "BOM item reference" msgstr "" -#: part/models.py:2734 +#: part/models.py:2742 msgid "BOM item notes" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "Checksum" msgstr "" -#: part/models.py:2736 +#: part/models.py:2744 msgid "BOM line checksum" msgstr "" -#: part/models.py:2740 part/templates/part/upload_bom.html:57 +#: part/models.py:2748 part/templates/part/upload_bom.html:57 #: templates/js/translated/bom.js:880 #: templates/js/translated/table_filters.js:68 #: templates/js/translated/table_filters.js:88 msgid "Inherited" msgstr "继承项" -#: part/models.py:2741 +#: part/models.py:2749 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:2746 part/templates/part/upload_bom.html:56 +#: part/models.py:2754 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:872 msgid "Allow Variants" msgstr "" -#: part/models.py:2747 +#: part/models.py:2755 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:2832 stock/models.py:446 +#: part/models.py:2840 stock/models.py:461 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:2841 part/models.py:2843 +#: part/models.py:2849 part/models.py:2851 msgid "Sub part must be specified" msgstr "" -#: part/models.py:2972 +#: part/models.py:2980 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:2994 +#: part/models.py:3002 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:3006 +#: part/models.py:3014 msgid "Parent BOM item" msgstr "" -#: part/models.py:3014 +#: part/models.py:3022 msgid "Substitute part" msgstr "" -#: part/models.py:3025 +#: part/models.py:3033 msgid "Part 1" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Part 2" msgstr "" -#: part/models.py:3029 +#: part/models.py:3037 msgid "Select Related Part" msgstr "" -#: part/models.py:3061 +#: part/models.py:3069 msgid "Error creating relationship: check that the part is not related to itself and that the relationship is unique" msgstr "" @@ -4532,7 +4562,7 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:274 +#: part/templates/part/bom.html:30 part/templates/part/detail.html:289 msgid "BOM actions" msgstr "" @@ -4641,46 +4671,43 @@ msgstr "" msgid "Part created successfully" msgstr "" -#: part/templates/part/category_delete.html:5 -msgid "Are you sure you want to delete category" -msgstr "您确定要删除此类别吗?" +#: part/templates/part/category_delete.html:7 +msgid "Are you sure you want to delete this part category?" +msgstr "" -#: part/templates/part/category_delete.html:8 +#: part/templates/part/category_delete.html:12 #, python-format -msgid "This category contains %(count)s child categories" -msgstr "此类别包含 %(count)s 个子类别" +msgid "This category contains %(n)s child categories" +msgstr "" -#: part/templates/part/category_delete.html:9 -msgid "If this category is deleted, these child categories will be moved to the" -msgstr "如果删除此类别,则这些子类别将被移动到以下位置:" +#: part/templates/part/category_delete.html:14 +#, python-format +msgid "If this category is deleted, these child categories will be moved to %(category)s" +msgstr "" -#: part/templates/part/category_delete.html:11 -msgid "category" -msgstr "类别" +#: part/templates/part/category_delete.html:16 +msgid "If this category is deleted, these child categories will be moved to the top level part category" +msgstr "" -#: part/templates/part/category_delete.html:13 -msgid "top level Parts category" -msgstr "顶层商品类别" +#: part/templates/part/category_delete.html:23 +#, python-format +msgid "This category contains %(n)s parts" +msgstr "" #: part/templates/part/category_delete.html:25 #, python-format -msgid "This category contains %(count)s parts" -msgstr "此类别包含 %(count)s 个商品" +msgid "If this category is deleted, these parts will be moved to %(category)s" +msgstr "" #: part/templates/part/category_delete.html:27 -#, python-format -msgid "If this category is deleted, these parts will be moved to the parent category %(path)s" -msgstr "如果删除此类别,这些商品将移至其父类别 %(path)s" - -#: part/templates/part/category_delete.html:29 -msgid "If this category is deleted, these parts will be moved to the top-level category Teile" +msgid "If this category is deleted, these parts will be moved to the top level part category" msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" msgstr "" -#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:348 +#: part/templates/part/copy_part.html:9 templates/js/translated/part.js:349 msgid "Duplicate Part" msgstr "复制部件" @@ -4708,150 +4735,150 @@ msgstr "" msgid "Part Stock" msgstr "商品库存" -#: part/templates/part/detail.html:38 +#: part/templates/part/detail.html:53 msgid "Part Stock Allocations" msgstr "" -#: part/templates/part/detail.html:55 +#: part/templates/part/detail.html:70 msgid "Part Test Templates" msgstr "" -#: part/templates/part/detail.html:60 +#: part/templates/part/detail.html:75 msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:117 +#: part/templates/part/detail.html:132 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:163 +#: part/templates/part/detail.html:178 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:167 +#: part/templates/part/detail.html:182 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:168 +#: part/templates/part/detail.html:183 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:195 +#: part/templates/part/detail.html:210 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:52 +#: part/templates/part/detail.html:247 part/templates/part/part_sidebar.html:57 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +#: part/templates/part/detail.html:251 part/templates/part/detail.html:252 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:257 part/templates/part/part_sidebar.html:18 +#: part/templates/part/detail.html:272 part/templates/part/part_sidebar.html:18 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:262 +#: part/templates/part/detail.html:277 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:266 templates/js/translated/bom.js:283 +#: part/templates/part/detail.html:281 templates/js/translated/bom.js:283 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:268 +#: part/templates/part/detail.html:283 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:278 +#: part/templates/part/detail.html:293 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:279 templates/js/translated/part.js:272 +#: part/templates/part/detail.html:294 templates/js/translated/part.js:273 msgid "Copy BOM" msgstr "" -#: part/templates/part/detail.html:280 +#: part/templates/part/detail.html:295 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:300 msgid "New BOM Item" msgstr "" -#: part/templates/part/detail.html:286 +#: part/templates/part/detail.html:301 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:299 +#: part/templates/part/detail.html:314 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:331 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:341 +#: part/templates/part/detail.html:356 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:356 +#: part/templates/part/detail.html:371 msgid "Part Suppliers" msgstr "商品供应商" -#: part/templates/part/detail.html:384 +#: part/templates/part/detail.html:399 msgid "Part Manufacturers" msgstr "商品制造商" -#: part/templates/part/detail.html:400 +#: part/templates/part/detail.html:415 msgid "Delete manufacturer parts" msgstr "删除制造商商品" -#: part/templates/part/detail.html:582 +#: part/templates/part/detail.html:602 msgid "Delete selected BOM items?" msgstr "" -#: part/templates/part/detail.html:583 +#: part/templates/part/detail.html:603 msgid "All selected BOM items will be deleted" msgstr "" -#: part/templates/part/detail.html:632 +#: part/templates/part/detail.html:652 msgid "Create BOM Item" msgstr "" -#: part/templates/part/detail.html:689 +#: part/templates/part/detail.html:709 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:697 +#: part/templates/part/detail.html:717 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:794 +#: part/templates/part/detail.html:814 msgid "Add Test Result Template" msgstr "" -#: part/templates/part/detail.html:844 +#: part/templates/part/detail.html:864 msgid "Edit Part Notes" msgstr "编辑商品注释" -#: part/templates/part/detail.html:957 +#: part/templates/part/detail.html:977 #, python-format msgid "Purchase Unit Price - %(currency)s" msgstr "" -#: part/templates/part/detail.html:969 +#: part/templates/part/detail.html:989 #, python-format msgid "Unit Price-Cost Difference - %(currency)s" msgstr "" -#: part/templates/part/detail.html:981 +#: part/templates/part/detail.html:1001 #, python-format msgid "Supplier Unit Cost - %(currency)s" msgstr "" -#: part/templates/part/detail.html:1070 +#: part/templates/part/detail.html:1090 #, python-format msgid "Unit Price - %(currency)s" msgstr "" @@ -4996,7 +5023,7 @@ msgstr "商品是虚拟的(不是实体零件)" #: templates/js/translated/company.js:508 #: templates/js/translated/company.js:765 #: templates/js/translated/model_renderers.js:175 -#: templates/js/translated/part.js:534 templates/js/translated/part.js:611 +#: templates/js/translated/part.js:535 templates/js/translated/part.js:612 msgid "Inactive" msgstr "" @@ -5031,8 +5058,8 @@ msgstr "" msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1155 -#: templates/js/translated/part.js:1328 +#: part/templates/part/part_base.html:245 templates/js/translated/part.js:1156 +#: templates/js/translated/part.js:1329 msgid "Building" msgstr "" @@ -5131,7 +5158,11 @@ msgstr "" msgid "Allocations" msgstr "" -#: part/templates/part/part_sidebar.html:48 +#: part/templates/part/part_sidebar.html:49 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:53 msgid "Test Templates" msgstr "" @@ -5247,8 +5278,8 @@ msgid "Set category for the following parts" msgstr "为以下商品设置类别" #: part/templates/part/stock_count.html:7 templates/js/translated/bom.js:811 -#: templates/js/translated/part.js:498 templates/js/translated/part.js:1145 -#: templates/js/translated/part.js:1332 +#: templates/js/translated/part.js:499 templates/js/translated/part.js:1146 +#: templates/js/translated/part.js:1333 msgid "No Stock" msgstr "" @@ -5363,7 +5394,7 @@ msgstr "" msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1026 templates/js/translated/part.js:315 +#: part/views.py:1026 templates/js/translated/part.js:316 msgid "Edit Part Category" msgstr "编辑商品类别" @@ -5601,12 +5632,12 @@ msgid "Stock Item Test Report" msgstr "" #: report/templates/report/inventree_test_report_base.html:79 -#: stock/models.py:608 stock/templates/stock/item_base.html:151 +#: stock/models.py:623 stock/templates/stock/item_base.html:151 #: templates/js/translated/build.js:374 templates/js/translated/build.js:522 -#: templates/js/translated/build.js:920 templates/js/translated/build.js:1296 +#: templates/js/translated/build.js:920 templates/js/translated/build.js:1308 #: templates/js/translated/model_renderers.js:95 #: templates/js/translated/order.js:99 templates/js/translated/order.js:2150 -#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:422 +#: templates/js/translated/order.js:2239 templates/js/translated/stock.js:432 msgid "Serial Number" msgstr "序列号" @@ -5615,19 +5646,19 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:93 -#: stock/models.py:2104 +#: stock/models.py:2119 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:94 -#: stock/models.py:2110 +#: stock/models.py:2125 msgid "Result" msgstr "" #: report/templates/report/inventree_test_report_base.html:97 #: templates/InvenTree/settings/plugin.html:50 #: templates/InvenTree/settings/plugin_settings.html:38 -#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2613 +#: templates/js/translated/order.js:984 templates/js/translated/stock.js:2623 msgid "Date" msgstr "" @@ -5645,8 +5676,8 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:137 -#: templates/js/translated/stock.js:542 templates/js/translated/stock.js:712 -#: templates/js/translated/stock.js:2866 +#: templates/js/translated/stock.js:552 templates/js/translated/stock.js:722 +#: templates/js/translated/stock.js:2876 msgid "Serial" msgstr "" @@ -5662,9 +5693,9 @@ msgstr "" msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/forms.py:74 stock/forms.py:198 stock/models.py:665 +#: stock/forms.py:74 stock/forms.py:198 stock/models.py:680 #: stock/templates/stock/item_base.html:188 -#: templates/js/translated/stock.js:1791 +#: templates/js/translated/stock.js:1801 msgid "Expiry Date" msgstr "" @@ -5704,228 +5735,228 @@ msgstr "" msgid "Confirm removal of installed stock items" msgstr "" -#: stock/models.py:62 stock/models.py:702 +#: stock/models.py:91 stock/models.py:717 #: stock/templates/stock/item_base.html:402 msgid "Owner" msgstr "" -#: stock/models.py:63 stock/models.py:703 +#: stock/models.py:92 stock/models.py:718 msgid "Select Owner" msgstr "" -#: stock/models.py:427 +#: stock/models.py:442 msgid "StockItem with this serial number already exists" msgstr "" -#: stock/models.py:463 +#: stock/models.py:478 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "商品类型 ('{pf}') 必须是 {pe}" -#: stock/models.py:473 stock/models.py:482 +#: stock/models.py:488 stock/models.py:497 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:474 +#: stock/models.py:489 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:496 +#: stock/models.py:511 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:502 +#: stock/models.py:517 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:509 +#: stock/models.py:524 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:552 +#: stock/models.py:567 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:561 +#: stock/models.py:576 msgid "Base part" msgstr "" -#: stock/models.py:569 +#: stock/models.py:584 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:575 stock/templates/stock/location.html:16 +#: stock/models.py:590 stock/templates/stock/location.html:16 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "仓储地点" -#: stock/models.py:578 +#: stock/models.py:593 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:585 +#: stock/models.py:600 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:591 stock/templates/stock/item_base.html:277 +#: stock/models.py:606 stock/templates/stock/item_base.html:277 msgid "Installed In" msgstr "" -#: stock/models.py:594 +#: stock/models.py:609 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:610 +#: stock/models.py:625 msgid "Serial number for this item" msgstr "" -#: stock/models.py:624 +#: stock/models.py:639 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:628 +#: stock/models.py:643 msgid "Stock Quantity" msgstr "" -#: stock/models.py:637 +#: stock/models.py:652 msgid "Source Build" msgstr "" -#: stock/models.py:639 +#: stock/models.py:654 msgid "Build for this stock item" msgstr "" -#: stock/models.py:650 +#: stock/models.py:665 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:653 +#: stock/models.py:668 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:659 +#: stock/models.py:674 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:666 +#: stock/models.py:681 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete on deplete" msgstr "" -#: stock/models.py:679 +#: stock/models.py:694 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:689 stock/templates/stock/item.html:121 +#: stock/models.py:704 stock/templates/stock/item.html:121 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:698 +#: stock/models.py:713 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:1223 +#: stock/models.py:1238 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1229 +#: stock/models.py:1244 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1235 +#: stock/models.py:1250 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:1238 +#: stock/models.py:1253 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1241 +#: stock/models.py:1256 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1248 +#: stock/models.py:1263 #, python-brace-format msgid "Serial numbers already exist: {exists}" msgstr "" -#: stock/models.py:1319 +#: stock/models.py:1334 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1322 +#: stock/models.py:1337 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1325 +#: stock/models.py:1340 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1328 +#: stock/models.py:1343 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1331 +#: stock/models.py:1346 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1334 +#: stock/models.py:1349 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1341 stock/serializers.py:832 +#: stock/models.py:1356 stock/serializers.py:832 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1345 +#: stock/models.py:1360 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1349 +#: stock/models.py:1364 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1353 +#: stock/models.py:1368 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1525 +#: stock/models.py:1540 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2024 +#: stock/models.py:2039 msgid "Entry notes" msgstr "" -#: stock/models.py:2081 +#: stock/models.py:2096 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2087 +#: stock/models.py:2102 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2105 +#: stock/models.py:2120 msgid "Test name" msgstr "" -#: stock/models.py:2111 +#: stock/models.py:2126 msgid "Test result" msgstr "" -#: stock/models.py:2117 +#: stock/models.py:2132 msgid "Test output value" msgstr "" -#: stock/models.py:2124 +#: stock/models.py:2139 msgid "Test result attachment" msgstr "" -#: stock/models.py:2130 +#: stock/models.py:2145 msgid "Test notes" msgstr "" @@ -6079,11 +6110,11 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2975 +#: stock/templates/stock/item.html:147 templates/js/translated/stock.js:2985 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1435 +#: stock/templates/stock/item.html:297 templates/js/translated/stock.js:1445 msgid "Add Test Result" msgstr "" @@ -6208,7 +6239,7 @@ msgid "Stale" msgstr "" #: stock/templates/stock/item_base.html:201 -#: templates/js/translated/stock.js:1807 +#: templates/js/translated/stock.js:1817 msgid "Last Updated" msgstr "" @@ -6245,7 +6276,7 @@ msgid "This stock item is serialized - it has a unique serial number and the qua msgstr "" #: stock/templates/stock/item_base.html:296 -#: templates/js/translated/build.js:1318 +#: templates/js/translated/build.js:1330 msgid "No location set" msgstr "未设置仓储地点" @@ -6274,7 +6305,7 @@ msgstr "" msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:483 +#: stock/templates/stock/item_base.html:481 msgid "Edit Stock Status" msgstr "" @@ -6355,10 +6386,38 @@ msgstr "打印操作" msgid "Print labels" msgstr "打印标签" -#: stock/templates/stock/location_delete.html:7 +#: stock/templates/stock/location_delete.html:8 msgid "Are you sure you want to delete this stock location?" msgstr "确实要删除此仓储地点吗?" +#: stock/templates/stock/location_delete.html:13 +#, python-format +msgid "This location contains %(n)s child locations" +msgstr "" + +#: stock/templates/stock/location_delete.html:15 +#, python-format +msgid "If this location is deleted, these child locations will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:17 +msgid "If this location is deleted, these child locations will be moved to the top level stock location" +msgstr "" + +#: stock/templates/stock/location_delete.html:25 +#, python-format +msgid "This location contains %(n)s stock items" +msgstr "" + +#: stock/templates/stock/location_delete.html:27 +#, python-format +msgid "If this location is deleted, these stock items will be moved to %(location)s" +msgstr "" + +#: stock/templates/stock/location_delete.html:29 +msgid "If this location is deleted, these stock items will be moved to the top level stock location" +msgstr "" + #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." msgstr "" @@ -6440,7 +6499,7 @@ msgstr "" msgid "Uninstall Stock Items" msgstr "" -#: stock/views.py:479 templates/js/translated/stock.js:1030 +#: stock/views.py:479 templates/js/translated/stock.js:1040 msgid "Confirm stock adjustment" msgstr "" @@ -6448,7 +6507,7 @@ msgstr "" msgid "Uninstalled stock items" msgstr "" -#: stock/views.py:512 templates/js/translated/stock.js:331 +#: stock/views.py:512 templates/js/translated/stock.js:341 msgid "Edit Stock Item" msgstr "" @@ -6460,7 +6519,7 @@ msgstr "新建仓储地点" msgid "Create new Stock Item" msgstr "" -#: stock/views.py:905 templates/js/translated/stock.js:311 +#: stock/views.py:905 templates/js/translated/stock.js:321 msgid "Duplicate Stock Item" msgstr "" @@ -7057,60 +7116,60 @@ msgstr "" msgid "Do you really want to remove the selected email address?" msgstr "" -#: templates/InvenTree/settings/user_display.html:26 +#: templates/InvenTree/settings/user_display.html:27 msgid "Theme Settings" msgstr "主题设置" -#: templates/InvenTree/settings/user_display.html:36 +#: templates/InvenTree/settings/user_display.html:37 msgid "Select theme" msgstr "" -#: templates/InvenTree/settings/user_display.html:47 +#: templates/InvenTree/settings/user_display.html:48 msgid "Set Theme" msgstr "设置主题" -#: templates/InvenTree/settings/user_display.html:55 +#: templates/InvenTree/settings/user_display.html:56 msgid "Language Settings" msgstr "语言设置" -#: templates/InvenTree/settings/user_display.html:64 +#: templates/InvenTree/settings/user_display.html:65 msgid "Select language" msgstr "" -#: templates/InvenTree/settings/user_display.html:80 +#: templates/InvenTree/settings/user_display.html:81 #, python-format msgid "%(lang_translated)s%% translated" msgstr "%(lang_translated)s%% 已翻译" -#: templates/InvenTree/settings/user_display.html:82 +#: templates/InvenTree/settings/user_display.html:83 msgid "No translations available" msgstr "无可用翻译" -#: templates/InvenTree/settings/user_display.html:89 +#: templates/InvenTree/settings/user_display.html:90 msgid "Set Language" msgstr "设置语言" -#: templates/InvenTree/settings/user_display.html:92 +#: templates/InvenTree/settings/user_display.html:93 msgid "Some languages are not complete" msgstr "" -#: templates/InvenTree/settings/user_display.html:94 +#: templates/InvenTree/settings/user_display.html:95 msgid "Show only sufficent" msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "and hidden." msgstr "" -#: templates/InvenTree/settings/user_display.html:96 +#: templates/InvenTree/settings/user_display.html:97 msgid "Show them too" msgstr "" -#: templates/InvenTree/settings/user_display.html:102 +#: templates/InvenTree/settings/user_display.html:103 msgid "Help the translation efforts!" msgstr "帮助翻译工作!" -#: templates/InvenTree/settings/user_display.html:103 +#: templates/InvenTree/settings/user_display.html:104 #, python-format msgid "Native language translation of the InvenTree web application is community contributed via crowdin. Contributions are welcomed and encouraged." msgstr "" @@ -7414,8 +7473,8 @@ msgstr "" #: templates/email/build_order_required_stock.html:19 #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1412 -#: templates/js/translated/build.js:2110 +#: templates/js/translated/bom.js:802 templates/js/translated/build.js:1424 +#: templates/js/translated/build.js:2125 #: templates/js/translated/table_filters.js:178 msgid "Available" msgstr "空闲" @@ -7607,7 +7666,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:982 +#: templates/js/translated/barcode.js:397 templates/js/translated/stock.js:992 msgid "Remove stock item" msgstr "" @@ -7747,7 +7806,7 @@ msgstr "" msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1394 +#: templates/js/translated/bom.js:743 templates/js/translated/build.js:1406 msgid "Variant stock allowed" msgstr "" @@ -7799,7 +7858,7 @@ msgstr "" msgid "Are you sure you want to delete this BOM item?" msgstr "" -#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1378 +#: templates/js/translated/bom.js:1323 templates/js/translated/build.js:1390 msgid "Required Part" msgstr "" @@ -7913,137 +7972,141 @@ msgstr "未指定仓储地点" msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1335 templates/js/translated/build.js:2121 +#: templates/js/translated/build.js:1347 templates/js/translated/build.js:2136 #: templates/js/translated/order.js:2187 msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/build.js:1337 templates/js/translated/build.js:2122 +#: templates/js/translated/build.js:1349 templates/js/translated/build.js:2137 #: templates/js/translated/order.js:2188 msgid "Delete stock allocation" msgstr "" -#: templates/js/translated/build.js:1355 +#: templates/js/translated/build.js:1367 msgid "Edit Allocation" msgstr "" -#: templates/js/translated/build.js:1365 +#: templates/js/translated/build.js:1377 msgid "Remove Allocation" msgstr "" -#: templates/js/translated/build.js:1390 +#: templates/js/translated/build.js:1402 msgid "Substitute parts available" msgstr "" -#: templates/js/translated/build.js:1407 +#: templates/js/translated/build.js:1419 msgid "Quantity Per" msgstr "" -#: templates/js/translated/build.js:1417 templates/js/translated/build.js:1667 -#: templates/js/translated/build.js:2117 templates/js/translated/order.js:2454 +#: templates/js/translated/build.js:1429 templates/js/translated/build.js:1681 +#: templates/js/translated/build.js:2132 templates/js/translated/order.js:2454 msgid "Allocated" msgstr "" -#: templates/js/translated/build.js:1473 templates/js/translated/order.js:2534 +#: templates/js/translated/build.js:1443 +msgid "loading" +msgstr "" + +#: templates/js/translated/build.js:1487 templates/js/translated/order.js:2534 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:1477 templates/stock_table.html:50 +#: templates/js/translated/build.js:1491 templates/stock_table.html:50 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:1480 templates/js/translated/order.js:2527 +#: templates/js/translated/build.js:1494 templates/js/translated/order.js:2527 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:1519 templates/js/translated/label.js:134 +#: templates/js/translated/build.js:1533 templates/js/translated/label.js:134 #: templates/js/translated/order.js:1755 templates/js/translated/report.js:225 msgid "Select Parts" msgstr "选择商品" -#: templates/js/translated/build.js:1520 templates/js/translated/order.js:1756 +#: templates/js/translated/build.js:1534 templates/js/translated/order.js:1756 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:1569 templates/js/translated/order.js:1704 +#: templates/js/translated/build.js:1583 templates/js/translated/order.js:1704 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:1640 +#: templates/js/translated/build.js:1654 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:1641 +#: templates/js/translated/build.js:1655 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:1655 templates/js/translated/order.js:1770 +#: templates/js/translated/build.js:1669 templates/js/translated/order.js:1770 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:1684 templates/js/translated/order.js:1805 +#: templates/js/translated/build.js:1698 templates/js/translated/order.js:1805 msgid "Confirm stock allocation" msgstr "确认库存分配" -#: templates/js/translated/build.js:1685 +#: templates/js/translated/build.js:1699 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:1696 templates/js/translated/order.js:1818 +#: templates/js/translated/build.js:1710 templates/js/translated/order.js:1818 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:1768 templates/js/translated/order.js:1895 +#: templates/js/translated/build.js:1782 templates/js/translated/order.js:1895 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:1865 +#: templates/js/translated/build.js:1879 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:1866 +#: templates/js/translated/build.js:1880 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:1868 +#: templates/js/translated/build.js:1882 msgid "If a location is specifed, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:1869 +#: templates/js/translated/build.js:1883 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:1870 +#: templates/js/translated/build.js:1884 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "" -#: templates/js/translated/build.js:1890 +#: templates/js/translated/build.js:1905 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:1928 +#: templates/js/translated/build.js:1943 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:1945 templates/js/translated/part.js:1236 -#: templates/js/translated/part.js:1647 templates/js/translated/stock.js:1599 -#: templates/js/translated/stock.js:2567 +#: templates/js/translated/build.js:1960 templates/js/translated/part.js:1237 +#: templates/js/translated/part.js:1648 templates/js/translated/stock.js:1609 +#: templates/js/translated/stock.js:2577 msgid "Select" msgstr "" -#: templates/js/translated/build.js:1965 +#: templates/js/translated/build.js:1980 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2029 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2044 templates/js/translated/stock.js:2789 msgid "No user information" msgstr "没有用户信息" -#: templates/js/translated/build.js:2041 +#: templates/js/translated/build.js:2056 msgid "No information" msgstr "" -#: templates/js/translated/build.js:2098 +#: templates/js/translated/build.js:2113 msgid "No parts allocated for" msgstr "" @@ -8108,34 +8171,34 @@ msgid "No manufacturer parts found" msgstr "" #: templates/js/translated/company.js:500 -#: templates/js/translated/company.js:757 templates/js/translated/part.js:518 -#: templates/js/translated/part.js:603 +#: templates/js/translated/company.js:757 templates/js/translated/part.js:519 +#: templates/js/translated/part.js:604 msgid "Template part" msgstr "" #: templates/js/translated/company.js:504 -#: templates/js/translated/company.js:761 templates/js/translated/part.js:522 -#: templates/js/translated/part.js:607 +#: templates/js/translated/company.js:761 templates/js/translated/part.js:523 +#: templates/js/translated/part.js:608 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:631 templates/js/translated/part.js:697 +#: templates/js/translated/company.js:631 templates/js/translated/part.js:698 msgid "No parameters found" msgstr "无指定参数" -#: templates/js/translated/company.js:668 templates/js/translated/part.js:739 +#: templates/js/translated/company.js:668 templates/js/translated/part.js:740 msgid "Edit parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:669 templates/js/translated/part.js:740 +#: templates/js/translated/company.js:669 templates/js/translated/part.js:741 msgid "Delete parameter" msgstr "删除参数" -#: templates/js/translated/company.js:688 templates/js/translated/part.js:757 +#: templates/js/translated/company.js:688 templates/js/translated/part.js:758 msgid "Edit Parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:699 templates/js/translated/part.js:769 +#: templates/js/translated/company.js:699 templates/js/translated/part.js:770 msgid "Delete Parameter" msgstr "删除参数" @@ -8244,7 +8307,7 @@ msgid "NO" msgstr "" #: templates/js/translated/label.js:29 templates/js/translated/report.js:118 -#: templates/js/translated/stock.js:1006 +#: templates/js/translated/stock.js:1016 msgid "Select Stock Items" msgstr "选择库存项" @@ -8441,7 +8504,7 @@ msgstr "" msgid "Quantity to receive" msgstr "" -#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2219 +#: templates/js/translated/order.js:623 templates/js/translated/stock.js:2229 msgid "Stock Status" msgstr "" @@ -8465,7 +8528,7 @@ msgstr "" msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/order.js:925 templates/js/translated/part.js:810 +#: templates/js/translated/order.js:925 templates/js/translated/part.js:811 msgid "No purchase orders found" msgstr "" @@ -8494,7 +8557,7 @@ msgid "Total" msgstr "" #: templates/js/translated/order.js:1241 templates/js/translated/order.js:2368 -#: templates/js/translated/part.js:1864 templates/js/translated/part.js:2075 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:2193 msgid "Unit Price" msgstr "单价" @@ -8503,11 +8566,11 @@ msgid "Total Price" msgstr "" #: templates/js/translated/order.js:1297 templates/js/translated/order.js:2426 -#: templates/js/translated/part.js:919 +#: templates/js/translated/part.js:920 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/order.js:1356 templates/js/translated/part.js:965 +#: templates/js/translated/order.js:1356 templates/js/translated/part.js:966 msgid "Receive line item" msgstr "" @@ -8588,7 +8651,7 @@ msgid "Delete Stock Allocation" msgstr "" #: templates/js/translated/order.js:2164 templates/js/translated/order.js:2253 -#: templates/js/translated/stock.js:1515 +#: templates/js/translated/stock.js:1525 msgid "Shipped to customer" msgstr "" @@ -8628,237 +8691,245 @@ msgstr "" msgid "No matching line items" msgstr "" -#: templates/js/translated/part.js:54 +#: templates/js/translated/part.js:55 msgid "Part Attributes" msgstr "商品属性" -#: templates/js/translated/part.js:58 +#: templates/js/translated/part.js:59 msgid "Part Creation Options" msgstr "商品创建选项" -#: templates/js/translated/part.js:62 +#: templates/js/translated/part.js:63 msgid "Part Duplication Options" msgstr "商品重复选项" -#: templates/js/translated/part.js:66 +#: templates/js/translated/part.js:67 msgid "Supplier Options" msgstr "" -#: templates/js/translated/part.js:80 +#: templates/js/translated/part.js:81 msgid "Add Part Category" msgstr "增加商品类别" -#: templates/js/translated/part.js:164 +#: templates/js/translated/part.js:165 msgid "Create Initial Stock" msgstr "" -#: templates/js/translated/part.js:165 +#: templates/js/translated/part.js:166 msgid "Create an initial stock item for this part" msgstr "" -#: templates/js/translated/part.js:172 +#: templates/js/translated/part.js:173 msgid "Initial Stock Quantity" msgstr "" -#: templates/js/translated/part.js:173 +#: templates/js/translated/part.js:174 msgid "Specify initial stock quantity for this part" msgstr "" -#: templates/js/translated/part.js:180 +#: templates/js/translated/part.js:181 msgid "Select destination stock location" msgstr "" -#: templates/js/translated/part.js:198 +#: templates/js/translated/part.js:199 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: templates/js/translated/part.js:199 +#: templates/js/translated/part.js:200 msgid "Copy parameter templates from selected part category" msgstr "" -#: templates/js/translated/part.js:207 +#: templates/js/translated/part.js:208 msgid "Add Supplier Data" msgstr "" -#: templates/js/translated/part.js:208 +#: templates/js/translated/part.js:209 msgid "Create initial supplier data for this part" msgstr "" -#: templates/js/translated/part.js:264 +#: templates/js/translated/part.js:265 msgid "Copy Image" msgstr "" -#: templates/js/translated/part.js:265 +#: templates/js/translated/part.js:266 msgid "Copy image from original part" msgstr "" -#: templates/js/translated/part.js:273 +#: templates/js/translated/part.js:274 msgid "Copy bill of materials from original part" msgstr "" -#: templates/js/translated/part.js:280 +#: templates/js/translated/part.js:281 msgid "Copy Parameters" msgstr "" -#: templates/js/translated/part.js:281 +#: templates/js/translated/part.js:282 msgid "Copy parameter data from original part" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:295 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:338 +#: templates/js/translated/part.js:339 msgid "Edit Part" msgstr "编辑商品" -#: templates/js/translated/part.js:340 +#: templates/js/translated/part.js:341 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:351 +#: templates/js/translated/part.js:352 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:418 +#: templates/js/translated/part.js:419 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:420 +#: templates/js/translated/part.js:421 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:425 +#: templates/js/translated/part.js:426 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:427 +#: templates/js/translated/part.js:428 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:444 +#: templates/js/translated/part.js:445 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:454 +#: templates/js/translated/part.js:455 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:457 +#: templates/js/translated/part.js:458 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:482 +#: templates/js/translated/part.js:483 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:510 templates/js/translated/part.js:595 +#: templates/js/translated/part.js:511 templates/js/translated/part.js:596 msgid "Trackable part" msgstr "可追溯商品" -#: templates/js/translated/part.js:514 templates/js/translated/part.js:599 +#: templates/js/translated/part.js:515 templates/js/translated/part.js:600 msgid "Virtual part" msgstr "虚拟商品" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:527 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:530 +#: templates/js/translated/part.js:531 msgid "Salable part" msgstr "可销售商品" -#: templates/js/translated/part.js:645 +#: templates/js/translated/part.js:646 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1035 +#: templates/js/translated/part.js:1036 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1059 +#: templates/js/translated/part.js:1060 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:1126 templates/js/translated/part.js:1386 +#: templates/js/translated/part.js:1127 templates/js/translated/part.js:1387 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:1296 +#: templates/js/translated/part.js:1297 msgid "No category" msgstr "没有分类" -#: templates/js/translated/part.js:1319 +#: templates/js/translated/part.js:1320 #: templates/js/translated/table_filters.js:425 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:1410 templates/js/translated/part.js:1582 -#: templates/js/translated/stock.js:2528 +#: templates/js/translated/part.js:1411 templates/js/translated/part.js:1583 +#: templates/js/translated/stock.js:2538 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:1426 +#: templates/js/translated/part.js:1427 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:1601 templates/js/translated/stock.js:2547 +#: templates/js/translated/part.js:1602 templates/js/translated/stock.js:2557 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:1665 +#: templates/js/translated/part.js:1666 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:1679 templates/js/translated/stock.js:2591 +#: templates/js/translated/part.js:1680 templates/js/translated/stock.js:2601 msgid "Path" msgstr "" -#: templates/js/translated/part.js:1723 +#: templates/js/translated/part.js:1724 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:1774 templates/js/translated/stock.js:1226 +#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1236 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:1775 templates/js/translated/stock.js:1227 -#: templates/js/translated/stock.js:1473 +#: templates/js/translated/part.js:1776 templates/js/translated/stock.js:1237 +#: templates/js/translated/stock.js:1483 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:1781 +#: templates/js/translated/part.js:1782 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:1803 +#: templates/js/translated/part.js:1804 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:1817 +#: templates/js/translated/part.js:1818 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:1842 +#: templates/js/translated/part.js:1843 #, python-brace-format msgid "No ${human_name} information found" msgstr "" -#: templates/js/translated/part.js:1897 +#: templates/js/translated/part.js:1898 #, python-brace-format msgid "Edit ${human_name}" msgstr "" -#: templates/js/translated/part.js:1898 +#: templates/js/translated/part.js:1899 #, python-brace-format msgid "Delete ${human_name}" msgstr "" -#: templates/js/translated/part.js:1999 +#: templates/js/translated/part.js:2004 +msgid "Current Stock" +msgstr "" + +#: templates/js/translated/part.js:2047 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:2117 msgid "Single Price" msgstr "" -#: templates/js/translated/part.js:2018 +#: templates/js/translated/part.js:2136 msgid "Single Price Difference" msgstr "" @@ -8960,328 +9031,332 @@ msgstr "" msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:381 +#: templates/js/translated/stock.js:301 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:391 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:394 +#: templates/js/translated/stock.js:404 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:419 +#: templates/js/translated/stock.js:429 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:423 templates/js/translated/stock.js:424 +#: templates/js/translated/stock.js:433 templates/js/translated/stock.js:434 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:440 +#: templates/js/translated/stock.js:450 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:460 +#: templates/js/translated/stock.js:470 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:469 +#: templates/js/translated/stock.js:479 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:592 +#: templates/js/translated/stock.js:602 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:593 +#: templates/js/translated/stock.js:603 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:670 +#: templates/js/translated/stock.js:680 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:671 +#: templates/js/translated/stock.js:681 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:673 +#: templates/js/translated/stock.js:683 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:674 +#: templates/js/translated/stock.js:684 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:760 +#: templates/js/translated/stock.js:770 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:761 +#: templates/js/translated/stock.js:771 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:856 +#: templates/js/translated/stock.js:866 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:857 +#: templates/js/translated/stock.js:867 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:863 +#: templates/js/translated/stock.js:873 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:864 +#: templates/js/translated/stock.js:874 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:868 +#: templates/js/translated/stock.js:878 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:869 +#: templates/js/translated/stock.js:879 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:873 +#: templates/js/translated/stock.js:883 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:874 users/models.py:213 +#: templates/js/translated/stock.js:884 users/models.py:213 msgid "Add" msgstr "添加" -#: templates/js/translated/stock.js:878 +#: templates/js/translated/stock.js:888 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:967 +#: templates/js/translated/stock.js:977 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1007 +#: templates/js/translated/stock.js:1017 msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1165 +#: templates/js/translated/stock.js:1175 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1167 +#: templates/js/translated/stock.js:1177 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1172 +#: templates/js/translated/stock.js:1182 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1219 +#: templates/js/translated/stock.js:1229 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1222 +#: templates/js/translated/stock.js:1232 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1248 +#: templates/js/translated/stock.js:1258 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1314 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1456 +#: templates/js/translated/stock.js:1466 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1478 +#: templates/js/translated/stock.js:1488 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1507 +#: templates/js/translated/stock.js:1517 msgid "In production" msgstr "正在生产" -#: templates/js/translated/stock.js:1511 +#: templates/js/translated/stock.js:1521 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1519 +#: templates/js/translated/stock.js:1529 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1525 +#: templates/js/translated/stock.js:1535 msgid "No stock location set" msgstr "未设置仓储地点" -#: templates/js/translated/stock.js:1683 +#: templates/js/translated/stock.js:1693 msgid "Stock item is in production" msgstr "库存品正在生产" -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/stock.js:1698 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1691 +#: templates/js/translated/stock.js:1701 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1695 +#: templates/js/translated/stock.js:1705 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1707 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1703 +#: templates/js/translated/stock.js:1713 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1705 +#: templates/js/translated/stock.js:1715 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1707 +#: templates/js/translated/stock.js:1717 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1712 +#: templates/js/translated/stock.js:1722 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1719 +#: templates/js/translated/stock.js:1729 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1721 +#: templates/js/translated/stock.js:1731 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1723 +#: templates/js/translated/stock.js:1733 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1727 +#: templates/js/translated/stock.js:1737 #: templates/js/translated/table_filters.js:188 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:1777 +#: templates/js/translated/stock.js:1787 msgid "Stocktake" msgstr "" -#: templates/js/translated/stock.js:1859 +#: templates/js/translated/stock.js:1869 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:1897 +#: templates/js/translated/stock.js:1907 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:1918 templates/js/translated/stock.js:1966 +#: templates/js/translated/stock.js:1928 templates/js/translated/stock.js:1976 msgid "items" msgstr "" -#: templates/js/translated/stock.js:2006 +#: templates/js/translated/stock.js:2016 msgid "batches" msgstr "" -#: templates/js/translated/stock.js:2033 +#: templates/js/translated/stock.js:2043 msgid "locations" msgstr "" -#: templates/js/translated/stock.js:2035 +#: templates/js/translated/stock.js:2045 msgid "Undefined location" msgstr "" -#: templates/js/translated/stock.js:2234 +#: templates/js/translated/stock.js:2244 msgid "Set Stock Status" msgstr "" -#: templates/js/translated/stock.js:2248 +#: templates/js/translated/stock.js:2258 msgid "Select Status Code" msgstr "" -#: templates/js/translated/stock.js:2249 +#: templates/js/translated/stock.js:2259 msgid "Status code must be selected" msgstr "" -#: templates/js/translated/stock.js:2428 +#: templates/js/translated/stock.js:2438 msgid "Allocated Quantity" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2648 msgid "Details" msgstr "详情" -#: templates/js/translated/stock.js:2663 +#: templates/js/translated/stock.js:2673 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2682 +#: templates/js/translated/stock.js:2692 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2701 +#: templates/js/translated/stock.js:2711 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2719 +#: templates/js/translated/stock.js:2729 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2752 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2760 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2791 +#: templates/js/translated/stock.js:2801 msgid "Edit tracking entry" msgstr "" -#: templates/js/translated/stock.js:2792 +#: templates/js/translated/stock.js:2802 msgid "Delete tracking entry" msgstr "" -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/stock.js:2853 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2894 +#: templates/js/translated/stock.js:2904 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2930 +#: templates/js/translated/stock.js:2940 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2931 +#: templates/js/translated/stock.js:2941 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2943 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2934 +#: templates/js/translated/stock.js:2944 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2935 +#: templates/js/translated/stock.js:2945 msgid "The Stock Item is serialized and does not belong to another item" msgstr "" -#: templates/js/translated/stock.js:2948 +#: templates/js/translated/stock.js:2958 msgid "Select part to install" msgstr "" diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index c188e183d0..e30fc838e4 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -50,7 +50,7 @@ {% if order.status == PurchaseOrderStatus.PENDING %} {% elif order.status == PurchaseOrderStatus.PLACED %}