From 3cf3519e82efe735f5228bc83bced6366ec895af Mon Sep 17 00:00:00 2001
From: Darshan Kalola
Dummy body
'}, + {'subject': 'Forget me subject', 'body': 'Dummy body
', 'post': True}, {'default_composition_mode': 'comment', 'default_model': 'mail.group', 'default_res_id': self.group_pigs_id, @@ -101,7 +101,7 @@ class test_message_compose(TestMail): 'default_template_id': email_template_id, 'active_ids': [self.group_pigs_id, self.group_bird_id] } - compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body'}, context) + compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body', 'post': True}, context) compose = mail_compose.browse(cr, uid, compose_id, context) onchange_res = compose.onchange_template_id(email_template_id, 'comment', 'mail.group', self.group_pigs_id)['value'] onchange_res['partner_ids'] = [(4, partner_id) for partner_id in onchange_res.pop('partner_ids', [])] @@ -145,7 +145,7 @@ class test_message_compose(TestMail): 'default_partner_ids': [p_a_id], 'active_ids': [self.group_pigs_id, self.group_bird_id] } - compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body'}, context) + compose_id = mail_compose.create(cr, uid, {'subject': 'Forget me subject', 'body': 'Dummy body', 'post': True}, context) compose = mail_compose.browse(cr, uid, compose_id, context) onchange_res = compose.onchange_template_id(email_template_id, 'mass_mail', 'mail.group', self.group_pigs_id)['value'] onchange_res['partner_ids'] = [(4, partner_id) for partner_id in onchange_res.pop('partner_ids', [])] diff --git a/addons/mail/tests/test_mail_features.py b/addons/mail/tests/test_mail_features.py index 970f07f519e..0688bf02606 100644 --- a/addons/mail/tests/test_mail_features.py +++ b/addons/mail/tests/test_mail_features.py @@ -631,6 +631,7 @@ class test_mail(TestMail): { 'subject': _subject, 'body': '${object.description}', + 'post': True, 'partner_ids': [(4, p_c_id), (4, p_d_id)], }, context={ 'default_composition_mode': 'mass_mail', @@ -684,6 +685,7 @@ class test_mail(TestMail): { 'subject': _subject, 'body': '${object.description}', + 'post': True, 'partner_ids': [(4, p_c_id), (4, p_d_id)], }, context={ 'default_composition_mode': 'mass_mail', diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index 82f01d35e05..1b3f6010893 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -134,8 +134,9 @@ class mail_compose_message(osv.TransientModel): 'body': lambda self, cr, uid, ctx={}: '', 'subject': lambda self, cr, uid, ctx={}: False, 'partner_ids': lambda self, cr, uid, ctx={}: [], - 'post': lambda self, cr, uid, ctx={}: True, - 'same_thread': lambda self, cr, uid, ctx={}: True, + 'post': False, + 'notify': False, + 'same_thread': True, } def check_access_rule(self, cr, uid, ids, operation, context=None): diff --git a/addons/mail/wizard/mail_compose_message_view.xml b/addons/mail/wizard/mail_compose_message_view.xml index ed1a211ce8c..ff1dd96229e 100644 --- a/addons/mail/wizard/mail_compose_message_view.xml +++ b/addons/mail/wizard/mail_compose_message_view.xml @@ -14,20 +14,11 @@
+
+ Delivered
+
Opened
@@ -61,10 +65,6 @@
Replied
-
- Bounced
-
+
+ Delivered
+
Opened
@@ -195,10 +199,6 @@
Replied
-
- Bounced
-
Sparkline: 1,4,6,6,8,5,3,5
-* $('.sparkline').sparkline(); -* There must be no spaces in the enclosed data set -* -* Otherwise values must be an array of numbers or null values -*Sparkline: This text replaced if the browser is compatible
-* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) -* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) -* -* Values can also be specified in an HTML comment, or as a values attribute: -*Sparkline:
-*Sparkline:
-* $('.sparkline').sparkline(); -* -* For line charts, x values can also be specified: -*Sparkline: 1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5
-* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) -* -* By default, options should be passed in as teh second argument to the sparkline function: -* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) -* -* Options can also be set by passing them on the tag itself. This feature is disabled by default though -* as there's a slight performance overhead: -* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) -*Sparkline: loading
-* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionPrefix) -* -* Supported options: -* lineColor - Color of the line used for the chart -* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart -* width - Width of the chart - Defaults to 3 times the number of values in pixels -* height - Height of the chart - Defaults to the height of the containing element -* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied -* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied -* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax -* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied -* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied -* composite - If true then don't erase any existing chart attached to the tag, but draw -* another chart over the top - Note that width and height are ignored if an -* existing chart is detected. -* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' -* enableTagOptions - Whether to check tags for sparkline options -* tagOptionPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' -* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a -* hidden dom element, avoding a browser reflow -* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, -* making the plugin perform much like it did in 1.x -* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) -* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled -* defaults to false (highlights enabled) -* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase -* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body -* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied -* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis -* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis -* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip -* callback is given arguments of (sparkline, options, fields) -* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title -* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) -* to control the format of the tooltip -* tooltipPrefix - A string to prepend to each field displayed in a tooltip -* tooltipSuffix - A string to append to each field displayed in a tooltip -* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) -* tooltipValueLookups - An object or range map to map field values to tooltip strings -* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") -* numberFormatter - Optional callback for formatting numbers in tooltips -* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," -* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." -* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 -* -* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), -* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' -* line - Line chart. Options: -* spotColor - Set to '' to not end each line in a circular spot -* minSpotColor - If set, color of spot at minimum value -* maxSpotColor - If set, color of spot at maximum value -* spotRadius - Radius in pixels -* lineWidth - Width of line in pixels -* normalRangeMin -* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" -* or expected range of values -* normalRangeColor - Color to use for the above bar -* drawNormalOnTop - Draw the normal range above the chart fill color if true -* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart -* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable -* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable -* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map -* -* bar - Bar chart. Options: -* barColor - Color of bars for postive values -* negBarColor - Color of bars for negative values -* zeroColor - Color of bars with zero values -* nullColor - Color of bars with null values - Defaults to omitting the bar entirely -* barWidth - Width of bars in pixels -* colorMap - Optional mappnig of values to colors to override the *BarColor values above -* can be an Array of values to control the color of individual bars or a range map -* to specify colors for individual ranges of values -* barSpacing - Gap between bars in pixels -* zeroAxis - Centers the y-axis around zero if true -* -* tristate - Charts values of win (>0), lose (<0) or draw (=0) -* posBarColor - Color of win values -* negBarColor - Color of lose values -* zeroBarColor - Color of draw values -* barWidth - Width of bars in pixels -* barSpacing - Gap between bars in pixels -* colorMap - Optional mappnig of values to colors to override the *BarColor values above -* can be an Array of values to control the color of individual bars or a range map -* to specify colors for individual ranges of values -* -* discrete - Options: -* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height -* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor -* thresholdColor -* -* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... -* options: -* targetColor - The color of the vertical target marker -* targetWidth - The width of the target marker in pixels -* performanceColor - The color of the performance measure horizontal bar -* rangeColors - Colors to use for each qualitative range background color -* -* pie - Pie chart. Options: -* sliceColors - An array of colors to use for pie slices -* offset - Angle in degrees to offset the first slice - Try -90 or +90 -* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) -* borderColor - Color to use for the pie chart border - Defaults to #000 -* -* box - Box plot. Options: -* raw - Set to true to supply pre-computed plot points as values -* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier -* When set to false you can supply any number of values and the box plot will -* be computed for you. Default is false. -* showOutliers - Set to true (default) to display outliers as circles -* outlierIQR - Interquartile range used to determine outliers. Default 1.5 -* boxLineColor - Outline color of the box -* boxFillColor - Fill color for the box -* whiskerColor - Line color used for whiskers -* outlierLineColor - Outline color of outlier circles -* outlierFillColor - Fill color of the outlier circles -* spotRadius - Radius of outlier circles -* medianColor - Line color of the median line -* target - Draw a target cross hair at the supplied value (default undefined) -* -* -* -* Examples: -* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); -* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); -* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): -* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); -* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); -* $('#pie').sparkline([1,1,2], { type:'pie' }); -*/ - -/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */ - -(function(factory) { - if(typeof define === 'function' && define.amd) { - define(['jquery'], factory); - } - else { - factory(jQuery); - } -} -(function($) { - 'use strict'; - - var UNSET_OPTION = {}, - getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, - remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap, - MouseHandler, Tooltip, barHighlightMixin, - line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles, - VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0; - - /** - * Default configuration settings - */ - getDefaults = function () { - return { - // Settings common to most/all chart types - common: { - type: 'line', - lineColor: '#00f', - fillColor: '#cdf', - defaultPixelsPerValue: 3, - width: 'auto', - height: 'auto', - composite: false, - tagValuesAttribute: 'values', - tagOptionsPrefix: 'spark', - enableTagOptions: false, - enableHighlight: true, - highlightLighten: 1.4, - tooltipSkipNull: true, - tooltipPrefix: '', - tooltipSuffix: '', - disableHiddenCheck: false, - numberFormatter: false, - numberDigitGroupCount: 3, - numberDigitGroupSep: ',', - numberDecimalMark: '.', - disableTooltips: false, - disableInteraction: false - }, - // Defaults for line charts - line: { - spotColor: '#f80', - highlightSpotColor: '#5f5', - highlightLineColor: '#f22', - spotRadius: 1.5, - minSpotColor: '#f80', - maxSpotColor: '#f80', - lineWidth: 1, - normalRangeMin: undefined, - normalRangeMax: undefined, - normalRangeColor: '#ccc', - drawNormalOnTop: false, - chartRangeMin: undefined, - chartRangeMax: undefined, - chartRangeMinX: undefined, - chartRangeMaxX: undefined, - tooltipFormat: new SPFormat('● {{prefix}}{{y}}{{suffix}}') - }, - // Defaults for bar charts - bar: { - barColor: '#3366cc', - negBarColor: '#f44', - stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', - '#dd4477', '#0099c6', '#990099'], - zeroColor: undefined, - nullColor: undefined, - zeroAxis: true, - barWidth: 4, - barSpacing: 1, - chartRangeMax: undefined, - chartRangeMin: undefined, - chartRangeClip: false, - colorMap: undefined, - tooltipFormat: new SPFormat('● {{prefix}}{{value}}{{suffix}}') - }, - // Defaults for tristate charts - tristate: { - barWidth: 4, - barSpacing: 1, - posBarColor: '#6f6', - negBarColor: '#f44', - zeroBarColor: '#999', - colorMap: {}, - tooltipFormat: new SPFormat('● {{value:map}}'), - tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } } - }, - // Defaults for discrete charts - discrete: { - lineHeight: 'auto', - thresholdColor: undefined, - thresholdValue: 0, - chartRangeMax: undefined, - chartRangeMin: undefined, - chartRangeClip: false, - tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}') - }, - // Defaults for bullet charts - bullet: { - targetColor: '#f33', - targetWidth: 3, // width of the target bar in pixels - performanceColor: '#33f', - rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'], - base: undefined, // set this to a number to change the base start number - tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'), - tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} } - }, - // Defaults for pie charts - pie: { - offset: 0, - sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', - '#dd4477', '#0099c6', '#990099'], - borderWidth: 0, - borderColor: '#000', - tooltipFormat: new SPFormat('● {{value}} ({{percent.1}}%)') - }, - // Defaults for box plots - box: { - raw: false, - boxLineColor: '#000', - boxFillColor: '#cdf', - whiskerColor: '#000', - outlierLineColor: '#333', - outlierFillColor: '#fff', - medianColor: '#f00', - showOutliers: true, - outlierIQR: 1.5, - spotRadius: 1.5, - target: undefined, - targetColor: '#4a2', - chartRangeMax: undefined, - chartRangeMin: undefined, - tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'), - tooltipFormatFieldlistKey: 'field', - tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median', - uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier', - lw: 'Left Whisker', rw: 'Right Whisker'} } - } - }; - }; - - // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname - defaultStyles = '.jqstooltip { ' + - 'position: absolute;' + - 'left: 0px;' + - 'top: 0px;' + - 'visibility: hidden;' + - 'background: rgb(0, 0, 0) transparent;' + - 'background-color: rgba(0,0,0,0.6);' + - 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' + - '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' + - 'color: white;' + - 'font: 10px arial, san serif;' + - 'text-align: left;' + - 'white-space: nowrap;' + - 'padding: 5px;' + - 'border: 1px solid white;' + - 'z-index: 10000;' + - '}' + - '.jqsfield { ' + - 'color: white;' + - 'font: 10px arial, san serif;' + - 'text-align: left;' + - '}'; - - /** - * Utilities - */ - - createClass = function (/* [baseclass, [mixin, ...]], definition */) { - var Class, args; - Class = function () { - this.init.apply(this, arguments); - }; - if (arguments.length > 1) { - if (arguments[0]) { - Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]); - Class._super = arguments[0].prototype; - } else { - Class.prototype = arguments[arguments.length - 1]; - } - if (arguments.length > 2) { - args = Array.prototype.slice.call(arguments, 1, -1); - args.unshift(Class.prototype); - $.extend.apply($, args); - } - } else { - Class.prototype = arguments[0]; - } - Class.prototype.cls = Class; - return Class; - }; - - /** - * Wraps a format string for tooltips - * {{x}} - * {{x.2} - * {{x:months}} - */ - $.SPFormatClass = SPFormat = createClass({ - fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g, - precre: /(\w+)\.(\d+)/, - - init: function (format, fclass) { - this.format = format; - this.fclass = fclass; - }, - - render: function (fieldset, lookups, options) { - var self = this, - fields = fieldset, - match, token, lookupkey, fieldvalue, prec; - return this.format.replace(this.fre, function () { - var lookup; - token = arguments[1]; - lookupkey = arguments[3]; - match = self.precre.exec(token); - if (match) { - prec = match[2]; - token = match[1]; - } else { - prec = false; - } - fieldvalue = fields[token]; - if (fieldvalue === undefined) { - return ''; - } - if (lookupkey && lookups && lookups[lookupkey]) { - lookup = lookups[lookupkey]; - if (lookup.get) { // RangeMap - return lookups[lookupkey].get(fieldvalue) || fieldvalue; - } else { - return lookups[lookupkey][fieldvalue] || fieldvalue; - } - } - if (isNumber(fieldvalue)) { - if (options.get('numberFormatter')) { - fieldvalue = options.get('numberFormatter')(fieldvalue); - } else { - fieldvalue = formatNumber(fieldvalue, prec, - options.get('numberDigitGroupCount'), - options.get('numberDigitGroupSep'), - options.get('numberDecimalMark')); - } - } - return fieldvalue; - }); - } - }); - - // convience method to avoid needing the new operator - $.spformat = function(format, fclass) { - return new SPFormat(format, fclass); - }; - - clipval = function (val, min, max) { - if (val < min) { - return min; - } - if (val > max) { - return max; - } - return val; - }; - - quartile = function (values, q) { - var vl; - if (q === 2) { - vl = Math.floor(values.length / 2); - return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2; - } else { - if (values.length % 2 ) { // odd - vl = (values.length * q + q) / 4; - return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; - } else { //even - vl = (values.length * q + 2) / 4; - return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; - - } - } - }; - - normalizeValue = function (val) { - var nf; - switch (val) { - case 'undefined': - val = undefined; - break; - case 'null': - val = null; - break; - case 'true': - val = true; - break; - case 'false': - val = false; - break; - default: - nf = parseFloat(val); - if (val == nf) { - val = nf; - } - } - return val; - }; - - normalizeValues = function (vals) { - var i, result = []; - for (i = vals.length; i--;) { - result[i] = normalizeValue(vals[i]); - } - return result; - }; - - remove = function (vals, filter) { - var i, vl, result = []; - for (i = 0, vl = vals.length; i < vl; i++) { - if (vals[i] !== filter) { - result.push(vals[i]); - } - } - return result; - }; - - isNumber = function (num) { - return !isNaN(parseFloat(num)) && isFinite(num); - }; - - formatNumber = function (num, prec, groupsize, groupsep, decsep) { - var p, i; - num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split(''); - p = (p = $.inArray('.', num)) < 0 ? num.length : p; - if (p < num.length) { - num[p] = decsep; - } - for (i = p - groupsize; i > 0; i -= groupsize) { - num.splice(i, 0, groupsep); - } - return num.join(''); - }; - - // determine if all values of an array match a value - // returns true if the array is empty - all = function (val, arr, ignoreNull) { - var i; - for (i = arr.length; i--; ) { - if (ignoreNull && arr[i] === null) continue; - if (arr[i] !== val) { - return false; - } - } - return true; - }; - - // sums the numeric values in an array, ignoring other values - sum = function (vals) { - var total = 0, i; - for (i = vals.length; i--;) { - total += typeof vals[i] === 'number' ? vals[i] : 0; - } - return total; - }; - - ensureArray = function (val) { - return $.isArray(val) ? val : [val]; - }; - - // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/ - addCSS = function(css) { - var tag; - //if ('\v' == 'v') /* ie only */ { - if (document.createStyleSheet) { - document.createStyleSheet().cssText = css; - } else { - tag = document.createElement('style'); - tag.type = 'text/css'; - document.getElementsByTagName('head')[0].appendChild(tag); - tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css; - } - }; - - // Provide a cross-browser interface to a few simple drawing primitives - $.fn.simpledraw = function (width, height, useExisting, interact) { - var target, mhandler; - if (useExisting && (target = this.data('_jqs_vcanvas'))) { - return target; - } - if (width === undefined) { - width = $(this).innerWidth(); - } - if (height === undefined) { - height = $(this).innerHeight(); - } - if ($.fn.sparkline.hasCanvas) { - target = new VCanvas_canvas(width, height, this, interact); - } else if ($.fn.sparkline.hasVML) { - target = new VCanvas_vml(width, height, this); - } else { - return false; - } - mhandler = $(this).data('_jqs_mhandler'); - if (mhandler) { - mhandler.registerCanvas(target); - } - return target; - }; - - $.fn.cleardraw = function () { - var target = this.data('_jqs_vcanvas'); - if (target) { - target.reset(); - } - }; - - $.RangeMapClass = RangeMap = createClass({ - init: function (map) { - var key, range, rangelist = []; - for (key in map) { - if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) { - range = key.split(':'); - range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]); - range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]); - range[2] = map[key]; - rangelist.push(range); - } - } - this.map = map; - this.rangelist = rangelist || false; - }, - - get: function (value) { - var rangelist = this.rangelist, - i, range, result; - if ((result = this.map[value]) !== undefined) { - return result; - } - if (rangelist) { - for (i = rangelist.length; i--;) { - range = rangelist[i]; - if (range[0] <= value && range[1] >= value) { - return range[2]; - } - } - } - return undefined; - } - }); - - // Convenience function - $.range_map = function(map) { - return new RangeMap(map); - }; - - MouseHandler = createClass({ - init: function (el, options) { - var $el = $(el); - this.$el = $el; - this.options = options; - this.currentPageX = 0; - this.currentPageY = 0; - this.el = el; - this.splist = []; - this.tooltip = null; - this.over = false; - this.displayTooltips = !options.get('disableTooltips'); - this.highlightEnabled = !options.get('disableHighlight'); - }, - - registerSparkline: function (sp) { - this.splist.push(sp); - if (this.over) { - this.updateDisplay(); - } - }, - - registerCanvas: function (canvas) { - var $canvas = $(canvas.canvas); - this.canvas = canvas; - this.$canvas = $canvas; - $canvas.mouseenter($.proxy(this.mouseenter, this)); - $canvas.mouseleave($.proxy(this.mouseleave, this)); - $canvas.click($.proxy(this.mouseclick, this)); - }, - - reset: function (removeTooltip) { - this.splist = []; - if (this.tooltip && removeTooltip) { - this.tooltip.remove(); - this.tooltip = undefined; - } - }, - - mouseclick: function (e) { - var clickEvent = $.Event('sparklineClick'); - clickEvent.originalEvent = e; - clickEvent.sparklines = this.splist; - this.$el.trigger(clickEvent); - }, - - mouseenter: function (e) { - $(document.body).unbind('mousemove.jqs'); - $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this)); - this.over = true; - this.currentPageX = e.pageX; - this.currentPageY = e.pageY; - this.currentEl = e.target; - if (!this.tooltip && this.displayTooltips) { - this.tooltip = new Tooltip(this.options); - this.tooltip.updatePosition(e.pageX, e.pageY); - } - this.updateDisplay(); - }, - - mouseleave: function () { - $(document.body).unbind('mousemove.jqs'); - var splist = this.splist, - spcount = splist.length, - needsRefresh = false, - sp, i; - this.over = false; - this.currentEl = null; - - if (this.tooltip) { - this.tooltip.remove(); - this.tooltip = null; - } - - for (i = 0; i < spcount; i++) { - sp = splist[i]; - if (sp.clearRegionHighlight()) { - needsRefresh = true; - } - } - - if (needsRefresh) { - this.canvas.render(); - } - }, - - mousemove: function (e) { - this.currentPageX = e.pageX; - this.currentPageY = e.pageY; - this.currentEl = e.target; - if (this.tooltip) { - this.tooltip.updatePosition(e.pageX, e.pageY); - } - this.updateDisplay(); - }, - - updateDisplay: function () { - var splist = this.splist, - spcount = splist.length, - needsRefresh = false, - offset = this.$canvas.offset(), - localX = this.currentPageX - offset.left, - localY = this.currentPageY - offset.top, - tooltiphtml, sp, i, result, changeEvent; - if (!this.over) { - return; - } - for (i = 0; i < spcount; i++) { - sp = splist[i]; - result = sp.setRegionHighlight(this.currentEl, localX, localY); - if (result) { - needsRefresh = true; - } - } - if (needsRefresh) { - changeEvent = $.Event('sparklineRegionChange'); - changeEvent.sparklines = this.splist; - this.$el.trigger(changeEvent); - if (this.tooltip) { - tooltiphtml = ''; - for (i = 0; i < spcount; i++) { - sp = splist[i]; - tooltiphtml += sp.getCurrentRegionTooltip(); - } - this.tooltip.setContent(tooltiphtml); - } - if (!this.disableHighlight) { - this.canvas.render(); - } - } - if (result === null) { - this.mouseleave(); - } - } - }); - - - Tooltip = createClass({ - sizeStyle: 'position: static !important;' + - 'display: block !important;' + - 'visibility: hidden !important;' + - 'float: left !important;', - - init: function (options) { - var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'), - sizetipStyle = this.sizeStyle, - offset; - this.container = options.get('tooltipContainer') || document.body; - this.tooltipOffsetX = options.get('tooltipOffsetX', 10); - this.tooltipOffsetY = options.get('tooltipOffsetY', 12); - // remove any previous lingering tooltip - $('#jqssizetip').remove(); - $('#jqstooltip').remove(); - this.sizetip = $('', { - id: 'jqssizetip', - style: sizetipStyle, - 'class': tooltipClassname - }); - this.tooltip = $('', { - id: 'jqstooltip', - 'class': tooltipClassname - }).appendTo(this.container); - // account for the container's location - offset = this.tooltip.offset(); - this.offsetLeft = offset.left; - this.offsetTop = offset.top; - this.hidden = true; - $(window).unbind('resize.jqs scroll.jqs'); - $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this)); - this.updateWindowDims(); - }, - - updateWindowDims: function () { - this.scrollTop = $(window).scrollTop(); - this.scrollLeft = $(window).scrollLeft(); - this.scrollRight = this.scrollLeft + $(window).width(); - this.updatePosition(); - }, - - getSize: function (content) { - this.sizetip.html(content).appendTo(this.container); - this.width = this.sizetip.width() + 1; - this.height = this.sizetip.height(); - this.sizetip.remove(); - }, - - setContent: function (content) { - if (!content) { - this.tooltip.css('visibility', 'hidden'); - this.hidden = true; - return; - } - this.getSize(content); - this.tooltip.html(content) - .css({ - 'width': this.width, - 'height': this.height, - 'visibility': 'visible' - }); - if (this.hidden) { - this.hidden = false; - this.updatePosition(); - } - }, - - updatePosition: function (x, y) { - if (x === undefined) { - if (this.mousex === undefined) { - return; - } - x = this.mousex - this.offsetLeft; - y = this.mousey - this.offsetTop; - - } else { - this.mousex = x = x - this.offsetLeft; - this.mousey = y = y - this.offsetTop; - } - if (!this.height || !this.width || this.hidden) { - return; - } - - y -= this.height + this.tooltipOffsetY; - x += this.tooltipOffsetX; - - if (y < this.scrollTop) { - y = this.scrollTop; - } - if (x < this.scrollLeft) { - x = this.scrollLeft; - } else if (x + this.width > this.scrollRight) { - x = this.scrollRight - this.width; - } - - this.tooltip.css({ - 'left': x, - 'top': y - }); - }, - - remove: function () { - this.tooltip.remove(); - this.sizetip.remove(); - this.sizetip = this.tooltip = undefined; - $(window).unbind('resize.jqs scroll.jqs'); - } - }); - - initStyles = function() { - addCSS(defaultStyles); - }; - - $(initStyles); - - pending = []; - $.fn.sparkline = function (userValues, userOptions) { - return this.each(function () { - var options = new $.fn.sparkline.options(this, userOptions), - $this = $(this), - render, i; - render = function () { - var values, width, height, tmp, mhandler, sp, vals; - if (userValues === 'html' || userValues === undefined) { - vals = this.getAttribute(options.get('tagValuesAttribute')); - if (vals === undefined || vals === null) { - vals = $this.html(); - } - values = vals.replace(/(^\s*\s*$)|\s+/g, '').split(','); - } else { - values = userValues; - } - - width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width'); - if (options.get('height') === 'auto') { - if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) { - // must be a better way to get the line height - tmp = document.createElement('span'); - tmp.innerHTML = 'a'; - $this.html(tmp); - height = $(tmp).innerHeight() || $(tmp).height(); - $(tmp).remove(); - tmp = null; - } - } else { - height = options.get('height'); - } - - if (!options.get('disableInteraction')) { - mhandler = $.data(this, '_jqs_mhandler'); - if (!mhandler) { - mhandler = new MouseHandler(this, options); - $.data(this, '_jqs_mhandler', mhandler); - } else if (!options.get('composite')) { - mhandler.reset(); - } - } else { - mhandler = false; - } - - if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) { - if (!$.data(this, '_jqs_errnotify')) { - alert('Attempted to attach a composite sparkline to an element with no existing sparkline'); - $.data(this, '_jqs_errnotify', true); - } - return; - } - - sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height); - - sp.render(); - - if (mhandler) { - mhandler.registerSparkline(sp); - } - }; - // jQuery 1.3.0 completely changed the meaning of :hidden :-/ - if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || ($.fn.jquery < '1.3.0' && $(this).parents().is(':hidden')) || !$(this).parents('body').length) { - if (!options.get('composite') && $.data(this, '_jqs_pending')) { - // remove any existing references to the element - for (i = pending.length; i; i--) { - if (pending[i - 1][0] == this) { - pending.splice(i - 1, 1); - } - } - } - pending.push([this, render]); - $.data(this, '_jqs_pending', true); - } else { - render.call(this); - } - }); - }; - - $.fn.sparkline.defaults = getDefaults(); - - - $.sparkline_display_visible = function () { - var el, i, pl; - var done = []; - for (i = 0, pl = pending.length; i < pl; i++) { - el = pending[i][0]; - if ($(el).is(':visible') && !$(el).parents().is(':hidden')) { - pending[i][1].call(el); - $.data(pending[i][0], '_jqs_pending', false); - done.push(i); - } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) { - // element has been inserted and removed from the DOM - // If it was not yet inserted into the dom then the .data request - // will return true. - // removing from the dom causes the data to be removed. - $.data(pending[i][0], '_jqs_pending', false); - done.push(i); - } - } - for (i = done.length; i; i--) { - pending.splice(done[i - 1], 1); - } - }; - - - /** - * User option handler - */ - $.fn.sparkline.options = createClass({ - init: function (tag, userOptions) { - var extendedOptions, defaults, base, tagOptionType; - this.userOptions = userOptions = userOptions || {}; - this.tag = tag; - this.tagValCache = {}; - defaults = $.fn.sparkline.defaults; - base = defaults.common; - this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix); - - tagOptionType = this.getTagSetting('type'); - if (tagOptionType === UNSET_OPTION) { - extendedOptions = defaults[userOptions.type || base.type]; - } else { - extendedOptions = defaults[tagOptionType]; - } - this.mergedOptions = $.extend({}, base, extendedOptions, userOptions); - }, - - - getTagSetting: function (key) { - var prefix = this.tagOptionsPrefix, - val, i, pairs, keyval; - if (prefix === false || prefix === undefined) { - return UNSET_OPTION; - } - if (this.tagValCache.hasOwnProperty(key)) { - val = this.tagValCache.key; - } else { - val = this.tag.getAttribute(prefix + key); - if (val === undefined || val === null) { - val = UNSET_OPTION; - } else if (val.substr(0, 1) === '[') { - val = val.substr(1, val.length - 2).split(','); - for (i = val.length; i--;) { - val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, '')); - } - } else if (val.substr(0, 1) === '{') { - pairs = val.substr(1, val.length - 2).split(','); - val = {}; - for (i = pairs.length; i--;) { - keyval = pairs[i].split(':', 2); - val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, '')); - } - } else { - val = normalizeValue(val); - } - this.tagValCache.key = val; - } - return val; - }, - - get: function (key, defaultval) { - var tagOption = this.getTagSetting(key), - result; - if (tagOption !== UNSET_OPTION) { - return tagOption; - } - return (result = this.mergedOptions[key]) === undefined ? defaultval : result; - } - }); - - - $.fn.sparkline._base = createClass({ - disabled: false, - - init: function (el, values, options, width, height) { - this.el = el; - this.$el = $(el); - this.values = values; - this.options = options; - this.width = width; - this.height = height; - this.currentRegion = undefined; - }, - - /** - * Setup the canvas - */ - initTarget: function () { - var interactive = !this.options.get('disableInteraction'); - if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) { - this.disabled = true; - } else { - this.canvasWidth = this.target.pixelWidth; - this.canvasHeight = this.target.pixelHeight; - } - }, - - /** - * Actually render the chart to the canvas - */ - render: function () { - if (this.disabled) { - this.el.innerHTML = ''; - return false; - } - return true; - }, - - /** - * Return a region id for a given x/y co-ordinate - */ - getRegion: function (x, y) { - }, - - /** - * Highlight an item based on the moused-over x,y co-ordinate - */ - setRegionHighlight: function (el, x, y) { - var currentRegion = this.currentRegion, - highlightEnabled = !this.options.get('disableHighlight'), - newRegion; - if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) { - return null; - } - newRegion = this.getRegion(el, x, y); - if (currentRegion !== newRegion) { - if (currentRegion !== undefined && highlightEnabled) { - this.removeHighlight(); - } - this.currentRegion = newRegion; - if (newRegion !== undefined && highlightEnabled) { - this.renderHighlight(); - } - return true; - } - return false; - }, - - /** - * Reset any currently highlighted item - */ - clearRegionHighlight: function () { - if (this.currentRegion !== undefined) { - this.removeHighlight(); - this.currentRegion = undefined; - return true; - } - return false; - }, - - renderHighlight: function () { - this.changeHighlight(true); - }, - - removeHighlight: function () { - this.changeHighlight(false); - }, - - changeHighlight: function (highlight) {}, - - /** - * Fetch the HTML to display as a tooltip - */ - getCurrentRegionTooltip: function () { - var options = this.options, - header = '', - entries = [], - fields, formats, formatlen, fclass, text, i, - showFields, showFieldsKey, newFields, fv, - formatter, format, fieldlen, j; - if (this.currentRegion === undefined) { - return ''; - } - fields = this.getCurrentRegionFields(); - formatter = options.get('tooltipFormatter'); - if (formatter) { - return formatter(this, options, fields); - } - if (options.get('tooltipChartTitle')) { - header += '
-
+
Sent
-
+
Delivered
-
+
Opened
-
+
Replied
-
- Sent
-
-
- Delivered
-
-
- Opened
-
-
- Replied
-
+
+ Sent
+
+
+ Delivered
+
+
+ Opened
+
+
+ Replied
+
\n" +" Click to add a contact in your address book.\n" +"
\n" +" OpenERP helps you easily track all activities related to\n" +" a customer; discussions, history of business opportunities,\n" +" documents, etc.\n" +"
\n" +" " +msgstr "" +"\n" +" Klik for at tilføje kontakt i din adressebog.\n" +"
\n" +" OpenERP hjælper med at spore alle aktiviteter i forbindelse med\n" +" kunde korrespondance, historik på forretnings muligheder,\n" +" dokumenter, o.s.v.\n" +"
\n" +" " + +#. module: contacts +#: model:ir.actions.act_window,name:contacts.action_contacts +#: model:ir.ui.menu,name:contacts.menu_contacts +msgid "Contacts" +msgstr "Adressebog" diff --git a/addons/email_template/i18n/en_GB.po b/addons/email_template/i18n/en_GB.po new file mode 100644 index 00000000000..5734ecbd334 --- /dev/null +++ b/addons/email_template/i18n/en_GB.po @@ -0,0 +1,490 @@ +# English (United Kingdom) translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHORHello ${object.partner_id.name},
\n" +" \n" +"Here is your ${object.state in ('draft', 'sent') and 'quotation' or " +"'order confirmation'} from ${object.company_id.name}:
\n" +"\n" +"\n"
+" REFERENCES
\n"
+" Order number: ${object.name}
\n"
+" Order total: ${object.amount_total} "
+"${object.pricelist_id.currency_id.name}
\n"
+" Order date: ${object.date_order}
\n"
+" % if object.origin:\n"
+" Order reference: ${object.origin}
\n"
+" % endif\n"
+" % if object.client_order_ref:\n"
+" Your reference: ${object.client_order_ref}
\n"
+" % endif\n"
+" % if object.user_id:\n"
+" Your contact: ${object.user_id.name}\n"
+" % endif\n"
+"
\n" +" You can access this document and pay online via our Customer Portal:\n" +"
\n" +" View ${object.state in ('draft', 'sent') " +"and 'Quotation' or 'Order'}\n" +" % endif\n" +"\n" +" % if object.paypal_url:\n" +"It is also possible to directly pay with Paypal:
\n" +" \n" +"If you have any question, do not hesitate to contact us.
\n" +"Thank you for choosing ${object.company_id.name or 'us'}!
\n" +"Здравствуйте, ${object.partner_id.name}!
\n" +" \n" +"Направляем Вам ${object.state in ('draft', 'sent') and 'предложение' " +"or 'подтверждение заказа'} от ${object.company_id.name}:
\n" +"\n" +"\n"
+" СВОДКА
\n"
+" Заказ: ${object.name}
\n"
+" Итог: ${object.amount_total} "
+"${object.pricelist_id.currency_id.name}
\n"
+" Дата: ${object.date_order}
\n"
+" % if object.origin:\n"
+" Основание заказа: ${object.origin}
\n"
+" % endif\n"
+" % if object.client_order_ref:\n"
+" Ваша ссылка: ${object.client_order_ref}
\n"
+" % endif\n"
+" % if object.user_id:\n"
+" Ваш контакт: ${object.user_id.name}\n"
+" % endif\n"
+"
\n" +" Вы можете ознакомиться с этим документом онлайн и узнать о вариантах " +"оплаты через наш Портал:\n" +"
\n" +" Посмотреть ${object.state in ('draft', " +"'sent') and 'Предложение' or 'Заказ'}\n" +" % endif\n" +"\n" +" % if object.paypal_url:\n" +"Также возможно произвести оплату непосредственно через Paypal:
\n" +" \n" +"Если у Вас есть вопросы - пожалуйста, свяжитесь с нами.
\n" +"Спасибо, что выбрали ${object.company_id.name or 'нас'}!
\n" +"Hello ${object.partner_id.name},
\n" +"\n" +"A new invoice is available for you:
\n" +" \n" +"\n"
+" REFERENCES
\n"
+" Invoice number: ${object.number}
\n"
+" Invoice total: ${object.amount_total} "
+"${object.currency_id.name}
\n"
+" Invoice date: ${object.date_invoice}
\n"
+" % if object.origin:\n"
+" Order reference: ${object.origin}
\n"
+" % endif\n"
+" % if object.user_id:\n"
+" Your contact: ${object.user_id.name}\n"
+" % endif\n"
+"
\n" +" You can access the invoice document and pay online via our Customer " +"Portal:\n" +"
\n" +" View Invoice\n" +" % endif\n" +" \n" +" % if object.paypal_url:\n" +"It is also possible to directly pay with Paypal:
\n" +" \n" +"If you have any question, do not hesitate to contact us.
\n" +"Thank you for choosing ${object.company_id.name or 'us'}!
\n" +"Здравствуйте, ${object.partner_id.name},
\n" +"\n" +"Вам выставлен счёт:
\n" +" \n" +"\n"
+" СВОДКА
\n"
+" Счёт: ${object.number}
\n"
+" Итог: ${object.amount_total} "
+"${object.currency_id.name}
\n"
+" Дата: ${object.date_invoice}
\n"
+" % if object.origin:\n"
+" Основание: ${object.origin}
\n"
+" % endif\n"
+" % if object.user_id:\n"
+" Ваш контакт: ${object.user_id.name}\n"
+" % endif\n"
+"
\n" +" Вы можете ознакомиться с документом онлайн и узнать о вариантах оплаты " +"через наш Портал:\n" +"
\n" +" Посмотреть счёт\n" +" % endif\n" +" \n" +" % if object.paypal_url:\n" +"Также возможно произвести оплату через Paypal:
\n" +" \n" +"Если у Вас есть вопросы - пожалуйста, свяжитесь с нами.
\n" +"Спасибо, что выбрали ${object.company_id.name or 'нас'}!
\n" +"\n" +" Click to start a new purchase requisition process. \n" +"
\n" +" A purchase requisition is the step before a request for " +"quotation.\n" +" In a purchase requisition (or purchase tender), you can record " +"the\n" +" products you need to buy and trigger the creation of RfQs to\n" +" suppliers. After the negotiation, once you have reviewed all " +"the\n" +" supplier's offers, you can validate some and cancel others.\n" +"
\n" +" " +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,user_id:0 +msgid "Responsible" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,state:0 +msgid "Status" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Send to Suppliers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Group By..." +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "Purchase Done" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Purchase Requisition in negociation" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition.partner,partner_id:0 +msgid "Supplier" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "New" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Product Detail" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Qty" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Type" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner +#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition +#: model:ir.module.category,name:purchase_requisition.module_category_purchase_requisition +#: field:product.product,purchase_requisition:0 +#: field:purchase.order,requisition_id:0 +#: view:purchase.requisition:0 +#: field:purchase.requisition.line,requisition_id:0 +#: view:purchase.requisition.partner:0 +msgid "Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line +msgid "Purchase Requisition Line" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Purchase Orders with requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_product_product +#: field:purchase.requisition.line,product_id:0 +msgid "Product" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Quotations" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Terms and Conditions" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,description:0 +msgid "Description" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,company_id:0 +#: field:purchase.requisition.line,company_id:0 +msgid "Company" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "Create Quotation" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Approved by Supplier" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "or" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reset to Draft" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Current Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_user +msgid "User" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Order Reference" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition.line,product_qty:0 +msgid "Quantity" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition +#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt +msgid "Purchase Requisitions" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Quotation Detail" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:134 +#, python-format +msgid "" +"You have already one %s purchase order for this partner, you must cancel " +"this purchase order to create a new quotation." +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "End Date" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,name:0 +msgid "Requisition Reference" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,line_ids:0 +msgid "Products to Purchase" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "Sent to Suppliers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Search Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41 +#, python-format +msgid "No Product in Tender." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Date Ordered" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,exclusive:0 +msgid "" +"Purchase Requisition (exclusive): On the confirmation of a purchase order, " +"it cancels the remaining purchase order.\n" +"Purchase Requisition(Multiple): It allows to have multiple purchase " +"orders.On confirmation of a purchase order it does not cancel the remaining " +"orders" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Cancel Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_order +#: view:purchase.requisition:0 +msgid "Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,origin:0 +msgid "Source Document" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41 +#, python-format +msgid "Error!" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,exclusive:0 +msgid "Requisition Type" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "New Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Products" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Order Date" +msgstr "" + +#. module: purchase_requisition +#: selection:purchase.requisition,state:0 +msgid "Cancelled" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner +msgid "Purchase Requisition Partner" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Purchase for Requisitions" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order +msgid "Purchase orders" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,date_end:0 +msgid "Requisition Deadline" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reference" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_procurement_order +msgid "Procurement" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: view:purchase.requisition:0 +msgid "Source" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,warehouse_id:0 +msgid "Warehouse" +msgstr "" + +#. module: purchase_requisition +#: field:procurement.order,requisition_id:0 +msgid "Latest Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_manager +msgid "Manager" +msgstr "" + +#. module: purchase_requisition +#: selection:purchase.requisition,exclusive:0 +msgid "Purchase Requisition (exclusive)" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Product UoM" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:134 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Confirm Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "Cancel" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,date_start:0 +msgid "Requisition Date" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Start Date" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Requisition" +msgstr "" + +#. module: purchase_requisition +#: help:product.product,purchase_requisition:0 +msgid "" +"Check this box to generates purchase requisition instead of generating " +"requests for quotation from procurement." +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,purchase_ids:0 +msgid "Purchase Orders" +msgstr "" diff --git a/addons/web/i18n/ar.po b/addons/web/i18n/ar.po index eb9041c585e..65bbcd33781 100644 --- a/addons/web/i18n/ar.po +++ b/addons/web/i18n/ar.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-09-14 05:39+0000\n" +"X-Generator: Launchpad (build 16761)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bg.po b/addons/web/i18n/bg.po index 988b4e3a659..f291d6adfe4 100644 --- a/addons/web/i18n/bg.po +++ b/addons/web/i18n/bg.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-09-14 05:39+0000\n" +"X-Generator: Launchpad (build 16761)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bn.po b/addons/web/i18n/bn.po index bcfc65395af..00d840da9f5 100644 --- a/addons/web/i18n/bn.po +++ b/addons/web/i18n/bn.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-09-14 05:39+0000\n" +"X-Generator: Launchpad (build 16761)\n" #. module: web #. openerp-web diff --git a/addons/web/i18n/bs.po b/addons/web/i18n/bs.po index 8576e8affac..649a3838e96 100644 --- a/addons/web/i18n/bs.po +++ b/addons/web/i18n/bs.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-08-27 04:44+0000\n" -"X-Generator: Launchpad (build 16738)\n" +"X-Launchpad-Export-Date: 2013-09-14 05:39+0000\n" +"X-Generator: Launchpad (build 16761)\n" #. module: web #. openerp-web @@ -36,14 +36,14 @@ msgstr "prije %d minuta" #: code:addons/web/static/src/js/coresetup.js:620 #, python-format msgid "Still loading...+ Click to define a new mass mailing campaign. +
+ Create a campaign to structure mass mailing and get analysis from email status. +
+- Please choose a mass mailing campaign that will hold the new mailing. -
-- Please choose a model on which you will run the mass mailing. -
-+ Please choose a mass mailing campaign that will hold the new mailing. +
+- Please choose a filter that will be applied on the model - to find the records on which you will run the mass mailing. -
-+ Please choose a model on which you will run the mass mailing. +
+- Please choose the template to use to render the emails - to send. -
-+ Please choose a filter that will be applied on the model + to find the records on which you will run the mass mailing. +
+- Please choose the name of the mailing. -
-+ Please choose the template to use to render the emails + to send. +
++ Please choose the name of the mailing. +
+\n" +" Click to create a marketing campaign.\n" +"
\n" +" OpenERP's marketing campaign allows you to automate " +"communication\n" +" to your prospects. You can define a segment (set of conditions) " +"on\n" +" your leads and partners to fullfil the campaign.\n" +"
\n" +" A campaign can have many activities like sending an email, " +"printing\n" +" a letter, assigning to a team, etc. These activities are " +"triggered\n" +" from specific situations; contact form, 10 days after first\n" +" contact, if a lead is not closed yet, etc.\n" +"
\n" +" " +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.transition,interval_nbr:0 +msgid "Interval Value" +msgstr "" + +#. module: marketing_campaign +#: field:campaign.analysis,revenue:0 +#: field:marketing.campaign.activity,revenue:0 +msgid "Revenue" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "September" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "December" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign,partner_field_id:0 +msgid "" +"The generated workitems will be linked to the partner related to the record. " +"If the record is the partner itself leave this field empty. This is useful " +"for reporting purposes, via the Campaign Analysis or Campaign Follow-up " +"views." +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,month:0 +msgid "Month" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.transition,activity_to_id:0 +msgid "Next Activity" +msgstr "" + +#. module: marketing_campaign +#: model:ir.actions.act_window,name:marketing_campaign.act_marketing_campaing_stat +#: model:ir.actions.act_window,name:marketing_campaign.action_marketing_campaign_workitem +#: model:ir.ui.menu,name:marketing_campaign.menu_action_marketing_campaign_workitem +msgid "Campaign Follow-up" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign:0 +msgid "Test Mode" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign.segment,sync_mode:0 +msgid "Only records modified after last sync (no duplicates)" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign:0 +msgid "Campaign Statistics" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.activity,server_action_id:0 +msgid "The action to perform when this activity is activated" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign,partner_field_id:0 +msgid "Partner Field" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: model:ir.actions.act_window,name:marketing_campaign.action_campaign_analysis_all +#: model:ir.model,name:marketing_campaign.model_campaign_analysis +#: model:ir.ui.menu,name:marketing_campaign.menu_action_campaign_analysis_all +msgid "Campaign Analysis" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.segment,sync_mode:0 +msgid "" +"Determines an additional criterion to add to the filter when selecting new " +"records to inject in the campaign. \"No duplicates\" prevents selecting " +"records which have already entered the campaign previously.If the campaign " +"has a \"unique field\" set, \"no duplicates\" will also prevent selecting " +"records which have the same value for the unique field as other records that " +"already entered the campaign." +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign,mode:0 +msgid "Test in Realtime" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign,mode:0 +msgid "Test Directly" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,report_directory_id:0 +msgid "Directory" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign:0 +#: view:marketing.campaign.segment:0 +msgid "Draft" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +msgid "Marketing Campaign Activity" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +msgid "Preview" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,state:0 +#: view:marketing.campaign:0 +#: field:marketing.campaign,state:0 +#: view:marketing.campaign.segment:0 +#: field:marketing.campaign.segment,state:0 +#: view:marketing.campaign.workitem:0 +#: field:marketing.campaign.workitem,state:0 +msgid "Status" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "August" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign,mode:0 +msgid "Normal" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.activity,start:0 +msgid "This activity is launched when the campaign starts." +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.activity,signal:0 +msgid "" +"An activity with a signal can be called programmatically. Be careful, the " +"workitem is always created when a signal is sent" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: selection:campaign.analysis,state:0 +#: view:marketing.campaign.workitem:0 +#: selection:marketing.campaign.workitem,state:0 +msgid "To Do" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "June" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_email_template +msgid "Email Templates" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Sync mode: all records" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign.segment,sync_mode:0 +msgid "All records (no duplicates)" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Newly Created" +msgstr "" + +#. module: marketing_campaign +#: field:campaign.analysis,date:0 +msgid "Date" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "November" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,condition:0 +msgid "Condition" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.activity,report_id:0 +msgid "The report to generate when this activity is activated" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign,unique_field_id:0 +msgid "Unique Field" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,state:0 +#: view:marketing.campaign.workitem:0 +#: selection:marketing.campaign.workitem,state:0 +msgid "Exception" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "October" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,email_template_id:0 +msgid "Email Template" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "January" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +#: field:marketing.campaign.workitem,date:0 +msgid "Execution Date" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_marketing_campaign_workitem +msgid "Campaign Workitem" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_marketing_campaign_activity +msgid "Campaign Activity" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.activity,report_directory_id:0 +msgid "This folder is used to store the generated reports" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:136 +#: code:addons/marketing_campaign/marketing_campaign.py:148 +#: code:addons/marketing_campaign/marketing_campaign.py:158 +#, python-format +msgid "Error" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,server_action_id:0 +msgid "Action" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:528 +#, python-format +msgid "Automatic transition" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,start:0 +msgid "Start" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:819 +#, python-format +msgid "No preview" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +msgid "Process" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:530 +#: selection:marketing.campaign.transition,trigger:0 +#, python-format +msgid "Cosmetic" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.transition,trigger:0 +msgid "How is the destination workitem triggered" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: selection:campaign.analysis,state:0 +#: view:marketing.campaign:0 +#: selection:marketing.campaign,state:0 +#: selection:marketing.campaign.segment,state:0 +#: selection:marketing.campaign.workitem,state:0 +msgid "Done" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:214 +#, python-format +msgid "Operation not supported" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +msgid "Cancel" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Close" +msgstr "" + +#. module: marketing_campaign +#: constraint:marketing.campaign.segment:0 +msgid "Model of filter must be same as resource model of Campaign " +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Synchronize Manually" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.workitem:0 +#: field:marketing.campaign.workitem,res_id:0 +msgid "Resource ID" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_marketing_campaign_transition +msgid "Campaign Transition" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Marketing Campaign Segment" +msgstr "" + +#. module: marketing_campaign +#: model:ir.actions.act_window,name:marketing_campaign.act_marketing_campaing_segment_opened +#: model:ir.actions.act_window,name:marketing_campaign.action_marketing_campaign_segment_form +#: model:ir.ui.menu,name:marketing_campaign.menu_marketing_campaign_segment_form +#: view:marketing.campaign:0 +#: view:marketing.campaign.segment:0 +msgid "Segments" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,keep_if_condition_not_met:0 +msgid "Don't Delete Workitems" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.activity:0 +msgid "Incoming Transitions" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign.transition,interval_type:0 +msgid "Day(s)" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign:0 +#: field:marketing.campaign,activity_ids:0 +#: view:marketing.campaign.activity:0 +msgid "Activities" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign,mode:0 +msgid "With Manual Confirmation" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "May" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,type:0 +msgid "Type" +msgstr "" + +#. module: marketing_campaign +#: model:email.template,subject:marketing_campaign.email_template_3 +msgid "Congratulations! You are now one of our Gold Partners!" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign,unique_field_id:0 +msgid "" +"If set, this field will help segments that work in \"no duplicates\" mode to " +"avoid selecting similar records twice. Similar records are records that have " +"the same value for this unique field. For example by choosing the " +"\"email_from\" field for CRM Leads you would prevent sending the same " +"campaign to the same email address again. If not set, the \"no duplicates\" " +"segments will only avoid selecting the same record again if it entered the " +"campaign previously. Only easily comparable fields like textfields, " +"integers, selections or single relationships may be used." +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:529 +#, python-format +msgid "After %(interval_nbr)d %(interval_type)s" +msgstr "" + +#. module: marketing_campaign +#: model:ir.model,name:marketing_campaign.model_marketing_campaign +#: view:marketing.campaign:0 +msgid "Marketing Campaign" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.segment,date_done:0 +msgid "End Date" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "February" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,res_id:0 +#: view:marketing.campaign:0 +#: field:marketing.campaign,object_id:0 +#: field:marketing.campaign.segment,object_id:0 +#: view:marketing.campaign.workitem:0 +#: field:marketing.campaign.workitem,object_id:0 +msgid "Resource" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign,fixed_cost:0 +msgid "" +"Fixed cost for running this campaign. You may also specify variable cost and " +"revenue on each campaign activity. Cost and Revenue statistics are included " +"in Campaign Reporting." +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "Sync mode: only records updated after last sync" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:793 +#, python-format +msgid "Email Preview" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,signal:0 +msgid "Signal" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.workitem,date:0 +msgid "If date is not set, this workitem has to be run manually" +msgstr "" + +#. module: marketing_campaign +#: selection:campaign.analysis,month:0 +msgid "April" +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:158 +#, python-format +msgid "The campaign cannot be marked as done before all segments are closed." +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign:0 +#: field:marketing.campaign,mode:0 +msgid "Mode" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,activity_id:0 +#: view:marketing.campaign.workitem:0 +#: field:marketing.campaign.workitem,activity_id:0 +msgid "Activity" +msgstr "" + +#. module: marketing_campaign +#: help:marketing.campaign.segment,ir_filter_id:0 +msgid "" +"Filter to select the matching resource records that belong to this segment. " +"New filters can be created and saved using the advanced search on the list " +"view of the Resource. If no filter is set, all records are selected without " +"filtering. The synchronization mode may also add a criterion to the filter." +msgstr "" + +#. module: marketing_campaign +#: code:addons/marketing_campaign/marketing_campaign.py:136 +#, python-format +msgid "The campaign cannot be started. There are no activities in it." +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.segment,date_next_sync:0 +msgid "Next Synchronization" +msgstr "" + +#. module: marketing_campaign +#: model:email.template,body_html:marketing_campaign.email_template_2 +msgid "" +"Hi, we are delighted to welcome you among our Silver Partners as of today!" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.segment,ir_filter_id:0 +msgid "Filter" +msgstr "" + +#. module: marketing_campaign +#: view:marketing.campaign.segment:0 +msgid "All" +msgstr "" + +#. module: marketing_campaign +#: selection:marketing.campaign.segment,sync_mode:0 +msgid "Only records created after last sync" +msgstr "" + +#. module: marketing_campaign +#: field:marketing.campaign.activity,variable_cost:0 +msgid "Variable Cost" +msgstr "" + +#. module: marketing_campaign +#: model:email.template,subject:marketing_campaign.email_template_1 +msgid "Welcome to the OpenERP Partner Channel!" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,total_cost:0 +msgid "Cost" +msgstr "" + +#. module: marketing_campaign +#: view:campaign.analysis:0 +#: field:campaign.analysis,year:0 +msgid "Year" +msgstr "" From e9980e87254e2cc9539abdde7200416106b44b9e Mon Sep 17 00:00:00 2001 From: Christophe Simonis