Naar de producten
Error executing template "Designs/MooijVerf_generated/Paragraph/JumbotronContainer.cshtml"
System.Data.SqlClient.SqlException (0x80131904): Violation of PRIMARY KEY constraint 'PK__ItemType__3214EC0789BE1AE4'. Cannot insert duplicate key in object 'dbo.ItemType_JumbotronConfiguration'. The duplicate key value is (1311666).
The statement has been terminated.
   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
   at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
   at Dynamicweb.Content.Items.Queries.Repository.Update(IEnumerable`1 items, ItemContext context, Boolean synchronizePages)
   at Dynamicweb.Content.Items.Queries.Repository.Update(ItemEntry item, ItemContext context)
   at Dynamicweb.Content.Items.ItemEntry.Save(ItemContext context)
   at Bluedesk.DynamicWeb.ItemTypes.Configuration.JumbotronConfiguration.GetJumbotronStylesheet()
   at CompiledRazorTemplates.Dynamic.RazorEngine_a6069c8f695f442a9e4ca17885aa543c.Execute() in D:\dynamicweb.net\Solutions\Mooij\Files\Templates\Designs\MooijVerf_generated\Paragraph\JumbotronContainer.cshtml:line 264
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()
ClientConnectionId:c120b3ff-4dda-497c-a220-07d79bd9d56d
Error Number:2627,State:1,Class:14

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 @using Dynamicweb.Content.Items; 4 @using Dynamicweb.Content.Items.Metadata; 5 @using Bluedesk.DynamicWeb.ItemTypes; 6 @using Bluedesk.DynamicWeb.ItemTypes.Settings; 7 8 9 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 10 @using Dynamicweb; 11 @using Dynamicweb.Content.Items; 12 @using Bluedesk.DynamicWeb.ItemTypes; 13 @using Bluedesk.DynamicWeb.ItemTypes.Extensions; 14 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 15 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 16 @using Dynamicweb; 17 @using Dynamicweb.Frontend 18 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 19 20 @helper RenderButton(CTAButton button, PageView Pageview) 21 { 22 23 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview))) 24 { 25 string Template = button.GetButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview)); 26 @Template; 27 } 28 } 29 30 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 31 @using Dynamicweb; 32 @using Dynamicweb.Content.Items; 33 @using Bluedesk.DynamicWeb.ItemTypes; 34 35 @functions { 36 37 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration) 38 { 39 var colorService = new ColorSwatchService(); 40 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ; 41 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor; 42 Dictionary<string, string> FontConfig = new Dictionary<string, string>() { 43 { "textColor" , TextColor }, 44 { "fontSize" , FontConfiguration.FontSize }, 45 { "lineHeight", FontConfiguration.LineHeight}, 46 { "fontFamily" , FontConfiguration.FontConfiguration.FontFamily }, 47 { "fontWeight" , FontConfiguration.FontWeight }, 48 { "fontStyle" , FontConfiguration.FontStyle } 49 }; 50 return FontConfig; 51 } 52 53 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId) 54 { 55 string ButtonLabelAlignment = BC.ButtonLabelAlignment; 56 switch (ButtonLabelAlignment) 57 { 58 case "align-left": 59 ButtonLabelAlignment = "flex-start"; 60 break; 61 case "align-center": 62 ButtonLabelAlignment = "center"; 63 break; 64 case "align-right": 65 ButtonLabelAlignment = "flex-end"; 66 break; 67 case "align-full": 68 ButtonLabelAlignment = "space-between"; 69 break; 70 default: 71 ButtonLabelAlignment = "flex-start"; 72 break; 73 } 74 75 var btnStyleBlock = new System.Text.StringBuilder(); 76 77 // General Config 78 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px")); 79 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px")); 80 81 // Button Config 82 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px")); 83 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment)); 84 85 // Button Config Tab 86 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId))); 87 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId))); 88 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId))); 89 90 // Button Config Hover tab 91 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId))); 92 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId))); 93 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId))); 94 95 // Button Config Font Config 96 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize)); 97 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId))); 98 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight)); 99 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily)); 100 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight)); 101 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle)); 102 103 return btnStyleBlock.ToString(); 104 } 105 106 public string GenerateCssVar(string name, string value) 107 { 108 if (!string.IsNullOrWhiteSpace(value)) { 109 return $"--{name}: {value};"; 110 } else { 111 return ""; 112 } 113 } 114 } 115 116 117 @{ 118 119 JumbotronContainer _data = Dynamicweb.Content.Services.Items.GetItem("JumbotronContainer", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<JumbotronContainer>() ?? new JumbotronContainer(); 120 121 var colorService = new ColorSwatchService(); 122 123 string backgroundClass = !string.IsNullOrWhiteSpace(_data.JumbotronConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.JumbotronConfiguration.BackgroundClass) : ""; 124 string JumbotronHeight = _data.JumbotronHeight + "px"; 125 126 string BackgroundHorizontalPosition = ""; 127 string BackgroundVerticalPosition = ""; 128 129 string QuickmenuWidth = _data.QuickmenuWidth + "px"; 130 int JumbotronListCount = _data.JumbotronList.Count; 131 132 string JumbotronCarouselClass = JumbotronListCount != 1 ? "jumbotron__carousel" : "jumbotron__no-carousel"; 133 string JumbotronCarouselMobClass = JumbotronListCount != 1 ? "jumbotron__carousel-mob" : "jumbotron__no-carousel-mob"; 134 135 var paragraphID = Pageview.CurrentParagraph.ID; 136 var JumbotronBackgroundClassName = ""; 137 138 string ShoutboxBackgroundColor = _data.JumbotronConfiguration.ShoutboxBackgroundColor; 139 string ShoutBoxGradient = _data.JumbotronConfiguration.ShoutboxBackgroundGradient; 140 141 string ShoutboxBackgroundImage = _data.JumbotronConfiguration.ShoutboxBackgroundImage; 142 143 string QuickmenuBackgoundImage = _data.JumbotronConfiguration.QuickmenuBackgroundImage; 144 145 ShoutboxBackgroundColor = colorService.GetHexColor(Pageview.AreaID, ShoutboxBackgroundColor); 146 147 } 148 149 <!-- 150 ***************************** 151 **** BEGIN DESKTOP SETUP **** 152 ***************************** 153 --> 154 155 <section class="jumbotron__playground jumbotron-mask jumbotron__playground-@paragraphID jumbotron--desktop jumboConfig--@_data.JumbotronConfigurationID @_data.CssClass @backgroundClass"> 156 157 <section class="@JumbotronCarouselClass"> 158 159 @foreach (var _item in _data.JumbotronList) 160 { 161 162 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 163 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 164 JumbotronBackgroundClassName = "jumbotron__image_background_" + paragraphID + "_" + _item.Id; 165 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 166 <div class="jumbotron @_item.CssClass" id="@_item.Id"> 167 168 <style> 169 170 @@media screen and (min-width: 994px) { 171 .@JumbotronBackgroundClassName { 172 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=1200&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 173 } 174 } 175 176 @@media screen and (min-width: 1200px) { 177 .@JumbotronBackgroundClassName { 178 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=2000&height=@_data.JumbotronHeight&Quality=-1&Compression=100'); 179 } 180 } 181 182 </style> 183 184 <figure class="jumbotron__image rellaxOff @BackgroundHorizontalPosition @BackgroundVerticalPosition @JumbotronBackgroundClassName"></figure> 185 186 @RenderShoutbox(_data, _item) 187 </div> 188 } 189 190 </section> 191 192 <!-- BEGIN QUICKMENU --> 193 194 @RenderQuickmenu(_data) 195 196 <!-- END QUICKMENU --> 197 198 <div class="jumbotron__shaper-container"><!--// 199 <svg width="100%" height="500" viewBox="0 0 1600 600" preserveAspectRatio="none"> 200 <defs> 201 <style> 202 .cls-1 { 203 fill: #cccccb; 204 } 205 206 .cls-2 { 207 fill: #fff; 208 opacity: 0.2; 209 } 210 211 </style> 212 </defs> 213 <title></title> 214 <path class="jumbotron__shaper-homepage" d="M2.59,495,237,553l122-48,132,54,360,16,262-48,176-90,154,120,112,12,206-102,159.79,65v71H1.56S1.31,493.72,2.59,495Z" /> 215 <polygon class="cls-2" points="359 505 317 599 491 559 359 505" /> 216 <polygon class="cls-2" points="1289 437 1443 557 1177 601 1289 437" /> 217 <polygon class="cls-2" points="1761 467 1696.44 604.28 1920.8 603 1920.8 532.03 1761 467" /> 218 </svg> 219 <svg width="100%" height="600" viewBox="0 0 2000 600" preserveAspectRatio="none"> 220 <clipPath id="myClip"> 221 <path class="cls-1" d="M1999.57,425c-123.24,53.94-329.82,96.6-581.35,119.35q33.6-6.59,65.7-14.19c104.82-24.86,197.33-58,276-98.78,21.37-11.08,49.25-53.51,49.25-53.51C1609,504.41,1328.64,545.78,1128.7,558.21c-31.7,2-62.42,3.29-91.8,4.12q-18.23.13-36.6.13c-81.34,0-160.65-1.95-237.08-5.65-16.15-1.19-25.6-1.31-25.6-1.31C416.39,538.15,148.8,489.67,1,425H.3V600h2000V425Z"></path> 222 </clipPath> 223 </svg> 224 //--> 225 226 <!--// 227 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" height="0" width="0" viewBox="0 0 2000 600" preserveAspectRatio=""> 228 <clipPath id="myClip"> 229 <path class="st0" d="M0,0v325h0.2C37.1,389.7,104,438.2,184.3,455.5c0,0,2.4,0.1,6.4,1.3c19.1,3.7,38.9,5.7,59.3,5.7 230 c3.1,0,6.1,0,9.2-0.1c7.3-0.8,15-2.1,23-4.1c50-12.4,120.1-53.8,170.1-180.3c0,0-7,42.4-12.3,53.5c-19.7,40.8-42.8,73.9-69,98.8 231 c-5.4,5.1-10.8,9.8-16.4,14.2C417.4,421.6,469,378.9,499.8,325h0.2V0H0z" /> 232 </clipPath> 233 </svg> 234 //--> 235 236 <!--<img src="https://images.unsplash.com/photo-1592006256125-1e7622ead3b0?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ" alt="Photographer in a market." height="1000" width="1000" /> 237 <svg width="0" height="0"> 238 <clipPath id="svgClip" clipPathUnits="objectBoundingBox"> 239 <path d="M0.75815095, 0.0579477769 C0.879893708, 0.187288937 0.902165272, 0.677587654 0.799370955, 0.785996249 C0.627963035, 0.966765889 0.26163708, 0.91434951 0.111342491,0.755791573 C-0.0332137967,0.603287436 -0.035795248,0.382887577 0.0965066612,0.173955315 C0.200239457,0.0101396315 0.648923894,-0.0580965318 0.75815095,0.0579477769 Z"></path> 240 </clipPath> 241 </svg> 242 <style> 243 .jumbotron-mask { 244 clip-path: url(#svgClip); 245 width: 18em; 246 height: 18em; 247 object-fit: cover; 248 display: block; 249 margin-right: auto; 250 margin-left: auto; 251 } 252 </style>--> 253 </div> 254 255 </section> 256 257 <!-- 258 *************************** 259 **** END DESKTOP SETUP **** 260 *************************** 261 --> 262 263 <style> 264 @_data.JumbotronConfiguration.GetJumbotronStylesheet() 265 </style> 266 267 <!-- 268 **************************** 269 **** BEGIN MOBILE SETUP **** 270 **************************** 271 --> 272 273 <section class="jumbotron__playground jumbotron__playground-@paragraphID jumbotron--mobile @_data.CssClass"> 274 275 <section class="@JumbotronCarouselMobClass"> 276 @{ int mobIndex = 0; } 277 @foreach (var _item in _data.JumbotronList) 278 { 279 280 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition; 281 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle"; 282 string lazyLoad = mobIndex > 0 ? "loading='lazy'" : ""; 283 string jumbotronImage = _item.Image.Image.Replace("?x","&x"); 284 <div class="jumbotron @_item.CssClass"> 285 286 <!-- BEGIN IMAGE --> 287 288 <figure class="jumbotron__image-container"> 289 <picture class="jumbotron__image w-full h-full"> 290 <source media="(max-width: 400px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=400&Compression=90"> 291 <source media="(max-width: 500px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=500&Compression=90"> 292 <source media="(max-width: 600px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=600&Compression=90"> 293 <source media="(max-width: 700px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=700&Compression=90"> 294 <source media="(max-width: 994px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=-1&Width=994&Compression=90"> 295 <img src="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=400&Quality=-1&Compression=90" width="1980" height="500" alt="@_item.Image.ImageAlt" @lazyLoad /> 296 </picture> 297 </figure> 298 299 <!-- END IMAGE --> 300 <!-- BEGIN SHOUTBOX --> 301 302 @RenderShoutbox(_data, _item) 303 304 <!-- END SHOUTBOX --> 305 </div> 306 mobIndex++; 307 } 308 309 </section> 310 311 <!-- BEGIN QUICKMENU --> 312 313 @RenderQuickmenu(_data) 314 315 <!-- END QUICKMENU --> 316 317 </section> 318 319 <!-- 320 ************************ 321 *** END MOBILE SETUP *** 322 ************************ 323 --> 324 325 <style> 326 .jumbotron__playground, 327 .jumbotron { 328 height: auto; 329 } 330 331 @@media screen and (min-width: 991px){ 332 .jumbotron__playground-@paragraphID .jumbotron__carousel, 333 .jumbotron__playground-@paragraphID .jumbotron { 334 height: @JumbotronHeight; 335 overflow: hidden; 336 } 337 338 .jumbotron__playground-@paragraphID .jumbotron__container { 339 width: 100%; 340 } 341 342 .jumbotron__playground-@paragraphID .quickmenu { 343 width: @QuickmenuWidth; 344 } 345 346 .jumbotron__playground-@paragraphID .jumbotron__no-carousel, 347 .jumbotron__playground-@paragraphID .jumbotron__carousel { 348 width: calc(100% - @QuickmenuWidth); 349 350 } 351 352 .jumbotron__playground-@paragraphID .jumbotron__shoutbox { 353 background-color: @ShoutboxBackgroundColor; 354 @if (!string.IsNullOrWhiteSpace(ShoutBoxGradient)) { 355 356 <text> @ShoutBoxGradient </text> 357 358 } 359 @if (!string.IsNullOrWhiteSpace(ShoutboxBackgroundImage)) { 360 361 <text> 362 background-image: url('@ShoutboxBackgroundImage'); 363 </text> 364 365 } 366 } 367 368 .jumbotron__playground-@paragraphID .quickmenu { 369 @if (!string.IsNullOrWhiteSpace(QuickmenuBackgoundImage)) { 370 371 <text> 372 background-image: url('@QuickmenuBackgoundImage'); 373 </text> 374 375 } 376 } 377 378 379 } 380 </style> 381 382 @helper RenderShoutbox(JumbotronContainer _data, JumbotronListItem _item) 383 { 384 string ShoutboxFullHeightClass = _data.ShoutboxFullHeight ? "fullheight" : ""; 385 string ShoutboxBackgroundTransparentClass = _data.ShoutboxBackgroundTransparent ? "transparent" : ""; 386 387 string ShoutboxHorizontalPositionClass = _data.ShoutboxHorizontalPosition; 388 string ShoutboxVerticalPositionClass = _data.ShoutboxVerticalPosition != "center" ? @_data.ShoutboxVerticalPosition : "middle"; 389 390 <section class="jumbotron__container container @ShoutboxHorizontalPositionClass @ShoutboxVerticalPositionClass "> 391 392 @if (_item.HasShoutbox) 393 { 394 <div class="jumbotron__shoutbox @ShoutboxBackgroundTransparentClass @ShoutboxFullHeightClass"> 395 <section class="jumbotron__shoutbox-header"> 396 397 @_item.SubHeader.HeaderFormatted("jumbotron__subheading") 398 @_item.Header.HeaderFormatted("jumbotron__heading") 399 400 @if (!string.IsNullOrWhiteSpace(_item.Content.Text)) 401 { 402 <div class="jumbotron__shoutbox-intro">@_item.Content.Text</div> 403 } 404 405 @RenderButton(_item.Button, Pageview) 406 407 </section> 408 </div> 409 } 410 </section> 411 } 412 413 @helper RenderQuickmenu(JumbotronContainer _data) 414 { 415 int quickmenuWidth = _data.QuickmenuWidth; 416 417 if (quickmenuWidth > 0) 418 { 419 <div class="quickmenu"> 420 <h2 class="quickmenu__header">@_data.QuickmenuHeader</h2> 421 <nav class="quickmenu__list"> 422 @foreach (var _link in _data.QuickmenuLinks) 423 { 424 var highlightedClass = _link.Highlighted ? "highlighted" : ""; 425 var targetLink = _link.NewWindow ? "target='_blank'" : ""; 426 427 <a href="@_link.Link" class="quickmenu__link @highlightedClass" @targetLink> @_link.Name </a> 428 } 429 </nav> 430 </div> 431 } 432 } 433

Meer dan verf alleen

De verfgroothandel voor de vakschilder

Als specialist in verf, lakken, non-paint en andere schildersgerelateerde diensten en service voert Mooij Verf een breed assortiment binnen een mooi merkenpalet. Bij Mooij Verf voert de dagelijkse praktijk van huisschilders, aannemers en beheerders de boventoon. Met de koffietafel als het kloppend hart. 

levering op dezelfde dag

Soms moet je door. Snel. Mooij Verf levert bestelde materialen in de meeste gevallen nog dezelfde werkdag! 

Verftechnisch advies

Soms heb je advies nodig. Goede raad. De specialisten bij Mooij Verf geven adequaat antwoord op je vragen. 

Dagvoorraad in nachtkluis

Soms begin je heel vroeg. Of stopt laat. Je nieuwe dagvoorraad heeft Mooij Verf in de nachtkluis klaargezet. 

Voorraad op locatie

Soms vraagt logistiek om maatoplossingen. Met flexibel voorraadbeheer varieert Mooij Verf de ondersteuning. 

Landelijke dekking

Mooij Verf vestigingen

Mooij Verf is een verfgroothandelsorganisatie met 19 vestigingen in de provincies Noord-Holland, Zuid-Holland, Noord-Brabant, Limburg, Gelderland en Overijssel. De centrale distributie uit Alkmaar met de regionale afhaallocaties bieden complete leveringsdekking voor de schildersbranche, verfspeciaalzaak en bouw.

De "Winkel op Wielen", onze 20e vestiging versterkt onze service in Zuid-Holland met directe leveringen van een uitgebreid assortiment verfproducten. 

Naar boven
Cookies

Deze website maakt gebruik van cookies om uw ervaring met de site te verbeteren.