Giter Club home page Giter Club logo

baseprice's Introduction

Magenerds_BasePrice

With this extension you can show the base price of volume products to your customers.
If you have products which you sell in amounts and units this extension can calculate the base price.
The extension installs the following basic units and its conversions:

  • kg
  • g
  • mg
  • l
  • ml
  • m
  • cm
  • mm

You can also extend the units and edit all conversions. Furthermore the display of the base price is editable. This extension also works for configurable products if you provide the necessary information for the configurable’s simple products.

Extension installation

The easiest way to install the Magenerds module is via composer

# add to composer require
composer require magenerds/baseprice

# run magento setup to activate the module
bin/magento set:up

Extension activation

At any time you can enable and disable this extension in the system configuration.
You can do this by opening the backend menu Stores > Configuration.
There you will find the entry Magenerds > Base Price.
After clicking on it you see a dropdown box where you can enable/disable the module. Save the configuration and delete the cache.

BasePrice-Activation

Extension configuration

The extension can be configured if you go to Stores > Configuration and afterwards to Magenerds > Base Price.
After enabling the extension you can edit the base price template in order to influence the base price rendering in the frontend. You can type in whatever you want.
There are three variables available to render the base price information:

  • {BASE_PRICE}: Renders the calculated base price
  • {REF_AMOUNT}: Renders the reference amount
  • {REF_UNIT}: Renders the reference unit

Example: {BASE__PRICE} / {REF__AMOUNT} {REF__UNIT} will render to 2.90€ / 10 kg in the frontend.

BasePrice-Template

The extension install basic units and its conversions. But you can edit these conversions, delete the units or extend it with further units and its conversions.
Just click on Add below all those conversions in order to add another unit row. You define the product unit on the left side and the reference unit (the unit which the price will be calculated to) on the right side.

BasePrice-Mapping

How to use

Every product needs detailed information about the base price calculation. There are four attributes which every product has:

  • Product amount: Select the amount the product gets selled with quantity 1
  • Product unit: Select the unit the product gets selled with
  • Reference amount: Select the reference amount the product price has to be calculated with
  • Reference unit: Select the reference unit the product price has to be calculated with

Example: You have a product which is a bottle of milk which is 100 ml of size. It costs 2 €.
You want to display the price of milk for 1 l which is 20 €.
Therefore you have to configure your product like the following:

  • Product amount: 100
  • Product unit: ml
  • Reference amount: 1
  • Reference unit: l

You can configure the attributes in a product edit mask under the tab Base Price on the left side.

BasePrice-Usage

baseprice's People

Contributors

atlan avatar bullitt300 avatar ffalkone avatar mardl avatar mvenghaus avatar niclashoyer avatar nikolasmeyer avatar sippsolutions avatar sydekumf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

baseprice's Issues

ReflectionException, SerializerInterface does not exist

BasePrice 1.2.0 and 1.2.1 is not installable. Error during install:

php ./bin/magento setup:di:compile

Area configuration aggregation... 5/7 [====================>-------] 71% 34 secs 184.0 MiBMiB

[ReflectionException]
Class Magento\Framework\Serialize\SerializerInterface does not exist

Problem exists since trying update from 1.1.1 to 1.2.0 (should fix rendering of duplicate information for empty tier prices)

1.1.1 works, but shows the duplicate rendering error.

Magento version: 2.1.11

Can't install magento with this module present

To recreate:

  • composer create-project (best with requirement for baseprice 1.0.8)
  • run setup:install
  • bang

.... bin/magento setup:install ...

Starting Magento installation:
File permissions check...
[Progress: 1 / 438]
Required extensions check...
[Progress: 2 / 438]
Enabling Maintenance Mode...
[Progress: 3 / 438]
Installing deployment configuration...
[Progress: 4 / 438]
Cleaning up database...
Cleaning up database magento2
[Progress: 5 / 438]
Installing database schema:
Schema creation/updates:
Module 'Magento_Store':
Installing schema...
[Progress: 6 / 438]
Module 'Magenerds_Dashboard':
[Progress: 7 / 438]
Module 'Magento_Directory':
Installing schema...
[Progress: 8 / 438]
Module 'Magento_Theme':
Installing schema...
[Progress: 9 / 438]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 10 / 438]
Module 'Magento_Backend':
[Progress: 11 / 438]
Module 'Magento_Eav':
Installing schema...
[Progress: 12 / 438]
Module 'Magento_Customer':
Installing schema... Upgrading schema...
[Progress: 13 / 438]
Module 'Magento_Backup':
[Progress: 14 / 438]
Module 'Magento_AdminNotification':
Installing schema...
[Progress: 15 / 438]
Module 'Magento_Indexer':
Installing schema...
[Progress: 16 / 438]
Module 'Magento_BundleImportExport':
[Progress: 17 / 438]
Module 'Magento_CacheInvalidate':
[Progress: 18 / 438]
Module 'Magento_Cms':
Installing schema... Upgrading schema...
[Progress: 19 / 438]
Module 'Magento_Config':
Installing schema...
[Progress: 20 / 438]
Module 'Magento_CatalogImportExport':
[Progress: 21 / 438]
Module 'Magento_Catalog':
Installing schema... Upgrading schema...
[Progress: 22 / 438]
Module 'Magento_Rule':
[Progress: 23 / 438]
Module 'Magento_Msrp':
[Progress: 24 / 438]
Module 'Magento_Search':
Installing schema... Upgrading schema...
[Progress: 25 / 438]
Module 'Magento_CatalogUrlRewrite':
Installing schema...
[Progress: 26 / 438]
Module 'Magento_Widget':
Installing schema...
[Progress: 27 / 438]
Module 'Magento_Quote':
Installing schema... Upgrading schema...
[Progress: 28 / 438]
Module 'Magento_CheckoutAgreements':
Installing schema... Upgrading schema...
[Progress: 29 / 438]
Module 'Magento_SalesSequence':
Installing schema...
[Progress: 30 / 438]
Module 'Magento_CmsUrlRewrite':
[Progress: 31 / 438]
Module 'Magenerds_BasePrice':
[Progress: 32 / 438]
Module 'Magento_ConfigurableImportExport':
[Progress: 33 / 438]
Module 'Magento_Payment':
[Progress: 34 / 438]
Module 'Magento_Contact':
[Progress: 35 / 438]
Module 'Magento_Cookie':
[Progress: 36 / 438]
Module 'Magento_Cron':
Installing schema...
[Progress: 37 / 438]
Module 'Magento_CurrencySymbol':
[Progress: 38 / 438]
Module 'Magento_User':
Installing schema... Upgrading schema...
[Progress: 39 / 438]
Module 'Magento_CustomerImportExport':
[Progress: 40 / 438]
Module 'Magento_Deploy':
[Progress: 41 / 438]
Module 'Magento_Developer':
[Progress: 42 / 438]
Module 'Magento_Dhl':
[Progress: 43 / 438]
Module 'Magento_Authorization':
Installing schema...
[Progress: 44 / 438]
Module 'Magento_Downloadable':
Installing schema...
[Progress: 45 / 438]
Module 'Magento_ImportExport':
Installing schema... Upgrading schema...
[Progress: 46 / 438]
Module 'Magento_CatalogInventory':
Installing schema...
[Progress: 47 / 438]
Module 'Magento_Email':
Installing schema...
[Progress: 48 / 438]
Module 'Magento_EncryptionKey':
[Progress: 49 / 438]
Module 'Magento_Fedex':
[Progress: 50 / 438]
Module 'Magento_Sales':
Installing schema... Upgrading schema...
[Progress: 51 / 438]
Module 'Magento_Checkout':
[Progress: 52 / 438]
Module 'Magento_GoogleAnalytics':
[Progress: 53 / 438]
Module 'Magento_Ui':
Installing schema...
[Progress: 54 / 438]
Module 'Magento_GroupedImportExport':
[Progress: 55 / 438]
Module 'Magento_GroupedProduct':
[Progress: 56 / 438]
Module 'Magento_DownloadableImportExport':
[Progress: 57 / 438]
Module 'Magento_Bundle':
Installing schema... Upgrading schema...
[Progress: 58 / 438]
Module 'Magento_Security':
Installing schema... Upgrading schema...
[Progress: 59 / 438]
Module 'Magento_LayeredNavigation':
[Progress: 60 / 438]
Module 'Magento_Marketplace':
[Progress: 61 / 438]
Module 'Magento_MediaStorage':
[Progress: 62 / 438]
Module 'Magento_CatalogRule':
Installing schema... Upgrading schema...
[Progress: 63 / 438]
Module 'Magento_Multishipping':
[Progress: 64 / 438]
Module 'Magento_ConfigurableProduct':
Installing schema...
[Progress: 65 / 438]
Module 'Magento_Newsletter':
Installing schema...
[Progress: 66 / 438]
Module 'Magento_OfflinePayments':
[Progress: 67 / 438]
Module 'Magento_SalesRule':
Installing schema... Upgrading schema...
[Progress: 68 / 438]
Module 'Magento_PageCache':
[Progress: 69 / 438]
Module 'Magento_Vault':
Installing schema...
[Progress: 70 / 438]
Module 'Magento_Paypal':
Installing schema...
[Progress: 71 / 438]
Module 'Magento_Persistent':
Installing schema...
[Progress: 72 / 438]
Module 'Magento_ProductAlert':
Installing schema...
[Progress: 73 / 438]
Module 'Magento_ProductVideo':
Installing schema...
[Progress: 74 / 438]
Module 'Magento_Captcha':
Installing schema...
[Progress: 75 / 438]
Module 'Magento_Reports':
Installing schema...
[Progress: 76 / 438]
Module 'Magento_RequireJs':
[Progress: 77 / 438]
Module 'Magento_Review':
Installing schema...
[Progress: 78 / 438]
Module 'Magento_Rss':
[Progress: 79 / 438]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 80 / 438]
Module 'Magento_NewRelicReporting':
Installing schema...
[Progress: 81 / 438]
Module 'Magento_SalesInventory':
[Progress: 82 / 438]
Module 'Magento_OfflineShipping':
Installing schema...
[Progress: 83 / 438]
Module 'Magento_Authorizenet':
[Progress: 84 / 438]
Module 'Magento_SampleData':
[Progress: 85 / 438]
Module 'Magento_CatalogSearch':
Installing schema...
[Progress: 86 / 438]
Module 'Magento_Integration':
Installing schema... Upgrading schema...
[Progress: 87 / 438]
Module 'Magento_SendFriend':
Installing schema...
[Progress: 88 / 438]
Module 'Magento_Shipping':
[Progress: 89 / 438]
Module 'Magento_Sitemap':
Installing schema...
[Progress: 90 / 438]
Module 'Magento_GoogleAdwords':
[Progress: 91 / 438]
Module 'Magento_Swagger':
[Progress: 92 / 438]
Module 'Magento_Swatches':
Installing schema...
[Progress: 93 / 438]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 94 / 438]
Module 'Magento_Tax':
Installing schema...
[Progress: 95 / 438]
Module 'Magento_TaxImportExport':
[Progress: 96 / 438]
Module 'Magento_GiftMessage':
Installing schema...
[Progress: 97 / 438]
Module 'Magento_Translation':
Installing schema...
[Progress: 98 / 438]
Module 'Magento_GoogleOptimizer':
Installing schema...
[Progress: 99 / 438]
Module 'Magento_Ups':
[Progress: 100 / 438]
Module 'Magento_UrlRewrite':
Installing schema...
[Progress: 101 / 438]
Module 'Magenerds_GermanLaw':
[Progress: 102 / 438]
Module 'Magento_Usps':
[Progress: 103 / 438]
Module 'Magento_Variable':
Installing schema...
[Progress: 104 / 438]
Module 'Magento_Braintree':
[Progress: 105 / 438]
Module 'Magento_Version':
[Progress: 106 / 438]
Module 'Magento_Webapi':
[Progress: 107 / 438]
Module 'Magento_WebapiSecurity':
[Progress: 108 / 438]
Module 'Magento_Weee':
Installing schema...
[Progress: 109 / 438]
Module 'Magento_CatalogWidget':
[Progress: 110 / 438]
Module 'Magento_Wishlist':
Installing schema...
[Progress: 111 / 438]
Schema post-updates:
Module 'Magento_Store':
[Progress: 112 / 438]
Module 'Magenerds_Dashboard':
[Progress: 113 / 438]
Module 'Magento_Directory':
[Progress: 114 / 438]
Module 'Magento_Theme':
[Progress: 115 / 438]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 116 / 438]
Module 'Magento_Backend':
[Progress: 117 / 438]
Module 'Magento_Eav':
[Progress: 118 / 438]
Module 'Magento_Customer':
[Progress: 119 / 438]
Module 'Magento_Backup':
[Progress: 120 / 438]
Module 'Magento_AdminNotification':
[Progress: 121 / 438]
Module 'Magento_Indexer':
Running schema recurring...
[Progress: 122 / 438]
Module 'Magento_BundleImportExport':
[Progress: 123 / 438]
Module 'Magento_CacheInvalidate':
[Progress: 124 / 438]
Module 'Magento_Cms':
[Progress: 125 / 438]
Module 'Magento_Config':
[Progress: 126 / 438]
Module 'Magento_CatalogImportExport':
[Progress: 127 / 438]
Module 'Magento_Catalog':
Running schema recurring...
[Progress: 128 / 438]
Module 'Magento_Rule':
[Progress: 129 / 438]
Module 'Magento_Msrp':
[Progress: 130 / 438]
Module 'Magento_Search':
[Progress: 131 / 438]
Module 'Magento_CatalogUrlRewrite':
Running schema recurring...
[Progress: 132 / 438]
Module 'Magento_Widget':
[Progress: 133 / 438]
Module 'Magento_Quote':
[Progress: 134 / 438]
Module 'Magento_CheckoutAgreements':
[Progress: 135 / 438]
Module 'Magento_SalesSequence':
[Progress: 136 / 438]
Module 'Magento_CmsUrlRewrite':
[Progress: 137 / 438]
Module 'Magenerds_BasePrice':
[Progress: 138 / 438]
Module 'Magento_ConfigurableImportExport':
[Progress: 139 / 438]
Module 'Magento_Payment':
[Progress: 140 / 438]
Module 'Magento_Contact':
[Progress: 141 / 438]
Module 'Magento_Cookie':
[Progress: 142 / 438]
Module 'Magento_Cron':
[Progress: 143 / 438]
Module 'Magento_CurrencySymbol':
[Progress: 144 / 438]
Module 'Magento_User':
[Progress: 145 / 438]
Module 'Magento_CustomerImportExport':
[Progress: 146 / 438]
Module 'Magento_Deploy':
[Progress: 147 / 438]
Module 'Magento_Developer':
[Progress: 148 / 438]
Module 'Magento_Dhl':
[Progress: 149 / 438]
Module 'Magento_Authorization':
[Progress: 150 / 438]
Module 'Magento_Downloadable':
[Progress: 151 / 438]
Module 'Magento_ImportExport':
[Progress: 152 / 438]
Module 'Magento_CatalogInventory':
Running schema recurring...
[Progress: 153 / 438]
Module 'Magento_Email':
[Progress: 154 / 438]
Module 'Magento_EncryptionKey':
[Progress: 155 / 438]
Module 'Magento_Fedex':
[Progress: 156 / 438]
Module 'Magento_Sales':
[Progress: 157 / 438]
Module 'Magento_Checkout':
[Progress: 158 / 438]
Module 'Magento_GoogleAnalytics':
[Progress: 159 / 438]
Module 'Magento_Ui':
[Progress: 160 / 438]
Module 'Magento_GroupedImportExport':
[Progress: 161 / 438]
Module 'Magento_GroupedProduct':
[Progress: 162 / 438]
Module 'Magento_DownloadableImportExport':
[Progress: 163 / 438]
Module 'Magento_Bundle':
Running schema recurring...
[Progress: 164 / 438]
Module 'Magento_Security':
[Progress: 165 / 438]
Module 'Magento_LayeredNavigation':
[Progress: 166 / 438]
Module 'Magento_Marketplace':
[Progress: 167 / 438]
Module 'Magento_MediaStorage':
[Progress: 168 / 438]
Module 'Magento_CatalogRule':
[Progress: 169 / 438]
Module 'Magento_Multishipping':
[Progress: 170 / 438]
Module 'Magento_ConfigurableProduct':
Running schema recurring...
[Progress: 171 / 438]
Module 'Magento_Newsletter':
[Progress: 172 / 438]
Module 'Magento_OfflinePayments':
[Progress: 173 / 438]
Module 'Magento_SalesRule':
[Progress: 174 / 438]
Module 'Magento_PageCache':
[Progress: 175 / 438]
Module 'Magento_Vault':
[Progress: 176 / 438]
Module 'Magento_Paypal':
[Progress: 177 / 438]
Module 'Magento_Persistent':
[Progress: 178 / 438]
Module 'Magento_ProductAlert':
Running schema recurring...
[Progress: 179 / 438]
Module 'Magento_ProductVideo':
[Progress: 180 / 438]
Module 'Magento_Captcha':
[Progress: 181 / 438]
Module 'Magento_Reports':
Running schema recurring...
[Progress: 182 / 438]
Module 'Magento_RequireJs':
[Progress: 183 / 438]
Module 'Magento_Review':
[Progress: 184 / 438]
Module 'Magento_Rss':
[Progress: 185 / 438]
Module 'Magento_CatalogRuleConfigurable':
[Progress: 186 / 438]
Module 'Magento_NewRelicReporting':
[Progress: 187 / 438]
Module 'Magento_SalesInventory':
[Progress: 188 / 438]
Module 'Magento_OfflineShipping':
[Progress: 189 / 438]
Module 'Magento_Authorizenet':
[Progress: 190 / 438]
Module 'Magento_SampleData':
[Progress: 191 / 438]
Module 'Magento_CatalogSearch':
[Progress: 192 / 438]
Module 'Magento_Integration':
Running schema recurring...
[Progress: 193 / 438]
Module 'Magento_SendFriend':
[Progress: 194 / 438]
Module 'Magento_Shipping':
[Progress: 195 / 438]
Module 'Magento_Sitemap':
[Progress: 196 / 438]
Module 'Magento_GoogleAdwords':
[Progress: 197 / 438]
Module 'Magento_Swagger':
[Progress: 198 / 438]
Module 'Magento_Swatches':
[Progress: 199 / 438]
Module 'Magento_SwatchesLayeredNavigation':
[Progress: 200 / 438]
Module 'Magento_Tax':
[Progress: 201 / 438]
Module 'Magento_TaxImportExport':
[Progress: 202 / 438]
Module 'Magento_GiftMessage':
[Progress: 203 / 438]
Module 'Magento_Translation':
[Progress: 204 / 438]
Module 'Magento_GoogleOptimizer':
[Progress: 205 / 438]
Module 'Magento_Ups':
[Progress: 206 / 438]
Module 'Magento_UrlRewrite':
[Progress: 207 / 438]
Module 'Magenerds_GermanLaw':
[Progress: 208 / 438]
Module 'Magento_Usps':
[Progress: 209 / 438]
Module 'Magento_Variable':
[Progress: 210 / 438]
Module 'Magento_Braintree':
[Progress: 211 / 438]
Module 'Magento_Version':
[Progress: 212 / 438]
Module 'Magento_Webapi':
[Progress: 213 / 438]
Module 'Magento_WebapiSecurity':
[Progress: 214 / 438]
Module 'Magento_Weee':
Running schema recurring...
[Progress: 215 / 438]
Module 'Magento_CatalogWidget':
[Progress: 216 / 438]
Module 'Magento_Wishlist':
Running schema recurring...
[Progress: 217 / 438]
DDL cache cleared successfully
[Progress: 218 / 438]
Installing user configuration...
[Progress: 219 / 438]
Enabling caches:
Current status:
Array
(
[config] => 1
[layout] => 1
[block_html] => 1
[collections] => 1
[reflection] => 1
[db_ddl] => 1
[eav] => 1
[customer_notification] => 1
[full_page] => 1
[config_integration] => 1
[config_integration_api] => 1
[translate] => 1
[config_webservice] => 1
)

[Progress: 220 / 438]
Installing data...
Data install/update:
Module 'Magento_Store':
[Progress: 221 / 438]
Module 'Magenerds_Dashboard':
[Progress: 222 / 438]
Module 'Magento_Directory':
Installing data...
[Progress: 223 / 438]
Module 'Magento_Theme':
Installing data... Upgrading data...
[Progress: 224 / 438]
Module 'Magento_AdvancedPricingImportExport':
[Progress: 225 / 438]
Module 'Magento_Backend':
[Progress: 226 / 438]
Module 'Magento_Eav':
Installing data...
[Progress: 227 / 438]
Module 'Magento_Customer':
Installing data... Upgrading data...
[Progress: 228 / 438]
Module 'Magento_Backup':
[Progress: 229 / 438]
Module 'Magento_AdminNotification':
[Progress: 230 / 438]
Module 'Magento_Indexer':
Installing data...
[Progress: 231 / 438]
Module 'Magento_BundleImportExport':
[Progress: 232 / 438]
Module 'Magento_CacheInvalidate':
[Progress: 233 / 438]
Module 'Magento_Cms':
Installing data... Upgrading data...
[Progress: 234 / 438]
Module 'Magento_Config':
Installing data...
[Progress: 235 / 438]
Module 'Magento_CatalogImportExport':
[Progress: 236 / 438]
Module 'Magento_Catalog':
Installing data... Upgrading data...
[Progress: 237 / 438]
Module 'Magento_Rule':
[Progress: 238 / 438]
Module 'Magento_Msrp':
Installing data... Upgrading data...
[Progress: 239 / 438]
Module 'Magento_Search':
[Progress: 240 / 438]
Module 'Magento_CatalogUrlRewrite':
Installing data...
[Progress: 241 / 438]
Module 'Magento_Widget':
Installing data...
[Progress: 242 / 438]
Module 'Magento_Quote':
Installing data...
[Progress: 243 / 438]
Module 'Magento_CheckoutAgreements':
[Progress: 244 / 438]
Module 'Magento_SalesSequence':
Installing data...
[Progress: 245 / 438]
Module 'Magento_CmsUrlRewrite':
[Progress: 246 / 438]
Module 'Magenerds_BasePrice':
Installing data...

[Magento\Framework\Exception\NoSuchEntityException]
Attribute with attributeCode "baseprice_product_unit" does not exist.

Not working anymore with configurable products

Using Magento 2.4.3 and Baseprice.
Unfortunately, it is not working with configurable products.
If I select another swatch, base price does not change, it remains on the value of the parant product.

Any chance to get this working again?
grafik
grafik

Problem with Configurable Products

Hi,
I am trying the BasePrice Modul and was succesfull to get it working with simple products.

Unfortunately, it is not working for me with configurable products.

In the product view page, it is showing the baseprice of the main product, but when changing an option it still shows the same baseprice output.
I found, that the script in configurable/afterprice.phtml is giving an error: swatchWidget is undefined

I am using Magento2 Version 2.1.0 and the Luma Theme

Do you have any idea?
Best regards,
Jürgen

How to set import columns for base price data?

First of all - it works great this far :-) Thank you!
I would like to import the base price data due the standard product import in Magento 2.2.3
With the basic configuration of this extension how can I set up the import columns?

Thank you in advance,
matt

Unit 'labels' (options) are gone

In a magento 2.1.9 shop we do not see any "units" anymore, the respective select fields are empty (there is a "select value" thing though). I am not 100% sure but I think it did work before. This might be connected to a recent update (from 2.1.x).

The conversion rules are still shown, but with empty selected units.

Is there a simple way to repopulate the options ("kg", "g", ...), or a quick pointer about how to find the relevant fields via SQL and fix them accordingly?

No "base price" tab on products

Hi all,

I installed the latest release of BasePrice module (tried via composer and by just dropping the files). But the tabs "base price" is not appearing on the products page. The Base Price general config is available.

Using magento 2.3.5 ver2.

Kr,
Arne

Fatal Error for Grouped Products without active child

Fatal error: Uncaught Error: Call to a member function getId() on null in magenerds-base-price/Model/Plugin/AfterPrice.php:92 
Stack trace: 
#0 magenerds-base-price/Model/Plugin/AfterPrice.php(68): Magenerds\BasePrice\Model\Plugin\AfterPrice->getAfterPriceHtml(NULL) 
#1 vendor/magento/framework/Interception/Interceptor.php(135): Magenerds\BasePrice\Model\Plugin\AfterPrice->aroundRender(Object(Magento\Framework\Pricing\Render\Interceptor), Object(Closure), 'final_price', Object(Magento\Catalog\Model\Product\Interceptor), Array) 
#2 vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\Pricing\Render\Interceptor->Magento\Framework\Interception\{closure}('final_price', Object(Magento\Catalog\Model\Product\Interceptor), Array) 
#3 generated/code/Magento/Framework/Pricing/Render/Interceptor.php(26): Magento\Framework\Pricing\Render\Interceptor-> in magenerds-base-price/Model/Plugin/AfterPrice.php on line 92

A simple check for $product is enough as it is done for the original product in the beginning of this method.

        // check if product is available
        if (!$product) return '';

Additionally Units

As #22 already mention squaremeter is missing and with it some more.
We got the following list of units our customer want to include. I'll provide a PR for it and hope it gets merged. Some of the units are very uncommon but I guess having more in the module is better anyway so everyone can use the one he needs.


Dtzd
Garn
km
Paar (pair)
Pack

Rolle
Satz
Set
Std
Stk. (piece)
t

Baseprice Template problem

Hi,
I found today, that any changes in the backend on the Base Price Template has no influence on the frontend.

This is because of the function in Data.php, where the template is read from the configuration.
$template = $this->scopeConfig->getValue(
'baseprice/general/template',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);

I changed this to SCOPE_WEBSITE and than the value used is the one which I configured in the backend.
Any idea?
BR
Jürgen

InvalidArgumentException / serialize

I just installed the latest version of Baseprice 1.1.1 on Magento 2.2.1 with:
wget https://github.com/Magenerds/BasePrice/archive/1.1.1.tar.gz
tar xvzf 1.1.1.tar.gz
mv BasePrice-1.1.1 /var/www/mydomain.de/app/code/Magenerds/BasePrice
./bin/magento setup:upgrade

After going to the admin backend and selecting Magenerds -> Baseprice i get:

1 exception(s):
Exception #0 (InvalidArgumentException): Unable to unserialize value.

Exception #0 (InvalidArgumentException): Unable to unserialize value.
#0 /var/www/mydomain.de/vendor/magento/module-config/Model/Config/Backend/Serialized.php(55): Magento\Framework\Serialize\Serializer\Json->unserialize('a:14:{i:0;a:3:{...')
#1 /var/www/mydomain.de/vendor/magento/framework/Model/AbstractModel.php(601): Magento\Config\Model\Config\Backend\Serialized->_afterLoad()
#2 /var/www/mydomain.de/generated/code/Magento/Config/Model/Config/Backend/Serialized/ArraySerialized/Interceptor.php(323): Magento\Framework\Model\AbstractModel->afterLoad()
#3 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(441): Magento\Config\Model\Config\Backend\Serialized\ArraySerialized\Interceptor->afterLoad()
#4 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(349): Magento\Config\Block\System\Config\Form->getFieldData(Object(Magento\Config\Model\Config\Structure\Element\Field\Interceptor), 'baseprice/gener...')
#5 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(325): Magento\Config\Block\System\Config\Form->_initElement(Object(Magento\Config\Model\Config\Structure\Element\Field\Interceptor), Object(Magento\Framework\Data\Form\Element\Fieldset), 'baseprice/gener...', '', '')
#6 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(265): Magento\Config\Block\System\Config\Form->initFields(Object(Magento\Framework\Data\Form\Element\Fieldset), Object(Magento\Config\Model\Config\Structure\Element\Group), Object(Magento\Config\Model\Config\Structure\Element\Section))
#7 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(211): Magento\Config\Block\System\Config\Form->_initGroup(Object(Magento\Config\Model\Config\Structure\Element\Group), Object(Magento\Config\Model\Config\Structure\Element\Section), Object(Magento\Framework\Data\Form))
#8 /var/www/mydomain.de/vendor/magento/module-config/Block/System/Config/Form.php(548): Magento\Config\Block\System\Config\Form->initForm()
#9 /var/www/mydomain.de/vendor/magento/framework/View/Element/AbstractBlock.php(666): Magento\Config\Block\System\Config\Form->_beforeToHtml()
#10 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(558): Magento\Framework\View\Element\AbstractBlock->toHtml()
#11 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(534): Magento\Framework\View\Layout->_renderBlock('system\config\f...')
#12 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('system\config\f...')
#13 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('system\config\f...')
#14 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('system\config\f...', true)
#15 /var/www/mydomain.de/vendor/magento/framework/View/Element/AbstractBlock.php(507): Magento\Framework\View\Layout\Interceptor->renderElement('system\config\f...', true)
#16 /var/www/mydomain.de/vendor/magento/module-config/view/adminhtml/templates/system/config/edit.phtml(22): Magento\Framework\View\Element\AbstractBlock->getChildHtml('form')
#17 /var/www/mydomain.de/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/var/www/mydo...')
#18 /var/www/mydomain.de/vendor/magento/framework/View/Element/Template.php(270): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Config\Block\System\Config\Edit), '/var/www/mydo...', Array)
#19 /var/www/mydomain.de/vendor/magento/framework/View/Element/Template.php(300): Magento\Framework\View\Element\Template->fetchView('/var/www/mydo...')
#20 /var/www/mydomain.de/vendor/magento/module-backend/Block/Template.php(124): Magento\Framework\View\Element\Template->_toHtml()
#21 /var/www/mydomain.de/vendor/magento/framework/View/Element/AbstractBlock.php(667): Magento\Backend\Block\Template->_toHtml()
#22 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(558): Magento\Framework\View\Element\AbstractBlock->toHtml()
#23 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(534): Magento\Framework\View\Layout->_renderBlock('system.config.e...')
#24 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('system.config.e...')
#25 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('system.config.e...')
#26 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('system.config.e...', true)
#27 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('system.config.e...')
#28 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('content')
#29 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('content')
#30 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('content')
#31 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('content', true)
#32 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('content')
#33 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('admin.scope.col...')
#34 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('admin.scope.col...')
#35 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('admin.scope.col...')
#36 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('admin.scope.col...', true)
#37 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('admin.scope.col...')
#38 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('main.col')
#39 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main.col')
#40 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.col')
#41 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main.col', true)
#42 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('main.col')
#43 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('page.main.conta...')
#44 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.main.conta...')
#45 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.main.conta...')
#46 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.main.conta...', true)
#47 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('page.main.conta...')
#48 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('page.content')
#49 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.content')
#50 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.content')
#51 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.content', true)
#52 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('page.content')
#53 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#54 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#55 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#56 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.wrapper', true)
#57 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#58 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('backend.page')
#59 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('backend.page')
#60 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('backend.page')
#61 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('backend.page', true)
#62 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(585): Magento\Framework\View\Layout\Interceptor->renderElement('backend.page')
#63 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(536): Magento\Framework\View\Layout->_renderContainer('root')
#64 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#65 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(489): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#66 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('root', true)
#67 /var/www/mydomain.de/vendor/magento/framework/View/Layout.php(954): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#68 /var/www/mydomain.de/generated/code/Magento/Framework/View/Layout/Interceptor.php(492): Magento\Framework\View\Layout->getOutput()
#69 /var/www/mydomain.de/vendor/magento/framework/View/Result/Page.php(257): Magento\Framework\View\Layout\Interceptor->getOutput()
#70 /var/www/mydomain.de/vendor/magento/framework/View/Result/Layout.php(170): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#71 /var/www/mydomain.de/generated/code/Magento/Backend/Model/View/Result/Page/Interceptor.php(193): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#72 /var/www/mydomain.de/vendor/magento/framework/App/Http.php(139): Magento\Backend\Model\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#73 /var/www/mydomain.de/vendor/magento/framework/App/Bootstrap.php(256): Magento\Framework\App\Http->launch()
#74 /var/www/mydomain.de/pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#75 {main}

error on magento 2.2.1

I installed module in latest magento and if I want to go to shops -> configuration -> magenerds -> base price an error occures:
1 exception(s):
Exception #0 (InvalidArgumentException): Unable to unserialize value.

JS Error on configurable product in 2.2.6

I have an issue where the swatch-renderer doesn't work anymore on a configurable product with base price in Magento 2.2.6

The JS console throws an "Cannot read property 'element' of undefined" error when I loading the page. The interesting thing is that sometimes the page is loaded correctly.
I suspect a timing problem, but unfortunately I can't narrow down the error.
As you can see from the screenshot, the script assumes that it is not a swatchWidget. But this is wrong. It is a swatchWidget
bildschirmfoto 2018-10-25 um 15 03 57

Serialization Error on Magento 2.2

On Magento 2.2.1 I get the following error when opening "Shops -> Configuration -> Magenerds -> Base price" in the admin:

1 exception(s):
Exception #0 (InvalidArgumentException): Unable to unserialize value.

Exception #0 (InvalidArgumentException): Unable to unserialize value.
#0 /var/www/magento2/vendor/magento/module-config/Model/Config/Backend/Serialized.php(55): Magento\Framework\Serialize\Serializer\Json->unserialize('a:14:{i:0;a:3:{...')

Related Issues: #18 #21

I have installed the newest version (1.1.1) via composer. I did not have installed this module before.

checkout/cart support

It would be nice to be able to show baseprice in items on cart and checkout summary also.

Error after update to 2.2.2. and 2.2.3

Hi,

i got an error after updating the Magento Shop to version 2.2.2 and 2.2.3.

Installed extention: 1.2.1

If i open the config, i got this error:

Exception #0 (InvalidArgumentException): Unable to unserialize value.

Exception #0 (InvalidArgumentException): Unable to unserialize value.
#0 /usr/local/vhosts/test-design/www/vendor/magento/module-config/Model/Config/Backend/Serialized.php(55): Magento\Framework\Serialize\Serializer\Json->unserialize('a:23:{i:0;a:3:{...')
#1 /usr/local/vhosts/test-design/www/vendor/magento/framework/Model/AbstractModel.php(601): Magento\Config\Model\Config\Backend\Serialized->_afterLoad()
#2 /usr/local/vhosts/test-design/www/vendor/magento/module-config/Block/System/Config/Form.php(441): Magento\Framework\Model\AbstractModel->afterLoad()
#3 /usr/local/vhosts/test-design/www/vendor/magento/module-config/Block/System/Config/Form.php(349): Magento\Config\Block\System\Config\Form->getFieldData(Object(Magento\Config\Model\Config\Structure\Element\Field\Interceptor), 'baseprice/gener...')
#4 /usr/local/vhosts/test-design/www/vendor/magento/module-config/Block/System/Config/Form.php(325): Magento\Config\Block\System\Config\Form->_initElement(Object(Magento\Config\Model\Config\Structure\Element\Field\Interceptor), Object(Magento\Framework\Data\Form\Element\Fieldset), 'baseprice/gener...', '', '')

Group Products are not supported

One of your employees Florian wrote to me, that i should create a issue on the Github site of this project.

Simple and configurable Products are working with thix extension. But as far as i know group Products are not supported. I am not familiar enough with magento to wrote the code by myself to solve this Problem.
Is it planed to support group products with this extension in the future?

If you need more information please let me know.

regards
Kevin Nordloh

BasePrice in New_List Widget

Hi,

I know, thias modul is free and therefore support is not garanteed, but nevertheless, I want to report some issues which I found and could not solve myself so far.

It is regarding a block with new products, using the new_list.phtml widget as of the Luma theme.

If you have a configurable product with swatches, the output of the products in the new_list block is also changing. Of course this is not correct.

Do you have any idea how to solve this? Maybe disableing the plugin in a certain block.

You can have a look to see what I mean. It is on the following link: magento.hopfenexpress.de/pale-ale

On the right hand site of the screen you can see 2 new products. If you select in the middle of the screen the swatches 0.33l or 0.75l the display of "Grundpreis ....." for the new products is also changing.

Would be nice if you think about it.

Thanks and best regards,

Jürgen

Not support new Magento 2.2.1

Your composer.json is support this Magento framework:
"magento/framework": "100.1.*|101.0.0"
But Magento 2.2.1 is using:
"version": "101.0.1"

1.2.0: Call to undefined method Magenerds\BasePrice\Model\Plugin\AfterPrice::_getAfterPriceHtml()

That's the current error message:

[08-Feb-2018 07:20:37 UTC] PHP Fatal error:  Uncaught Error: Call to undefined method Magenerds\BasePrice\Model\Plugin\AfterPrice::_getAfterPriceHtml() in /var/www/MYSHOP/www.MYSHOP/htdocs/vendor/magenerds/baseprice/Model/Plugin/AfterPrice.php:84
Stack trace:
#0 /var/www/MYSHOP/www.MYSHOP/htdocs/vendor/magento/framework/Interception/Interceptor.php(135): Magenerds\BasePrice\Model\Plugin\AfterPrice->aroundRender(Object(Magento\Framework\Pricing\Render\Interceptor), Object(Closure), 'final_price', Object(Magento\Catalog\Model\Product\Interceptor), Array)
#1 /var/www/MYSHOP/www.MYSHOP/htdocs/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\Pricing\Render\Interceptor->Magento\Framework\Interception\{closure}('final_price', Object(Magento\Catalog\Model\Product\Interceptor), Array)
#2 /var/www/MYSHOP/www.MYSHOP/htdocs/generated/code/Magento/Framework/Pricing/Render/Interceptor.php(26): Magento\Framework\Pricing\Render\Interceptor->___callPlugins('rende in /var/www/MYSHOP/www.MYSHOP/htdocs/vendor/magenerds/baseprice/Model/Plugin/AfterPrice.php on line 84

The _getAfterPriceHtml() is now called getAfterPriceHtml(), but does require a SaleableInterface.

Output "Product Amount" (as variable)

Hello,

I'm trying to output the products general Product Amount. I tried using {PRODUCT_AMOUNT}, but there doesn't seem to be such variable.

I'm trying to output the base price in the following format: {PRODUCT_AMOUNT} (20,47 € / 1 l)

Much appreciated and great work btw,
Dennis

Can't add extra values to base price

Hello there I was unable to add attributes to the baseprice

Did the following:

$eavSetup->addAttributeOption([
'attribute_id' => $attributeId,
'values' => ['kg', 'g', 'mg', 'l', 'ml', 'm', 'cm', 'mm', 'Pack', 'St端ck']

Flushed Cache and it's still not selectable from the dropdown.

Any idea on how to solve this?

Best regards

JS Error on configurable product in M 2.2

I have an issue where the swatch-renderer doesn't work anymore on a configurable product with base price in Magento 2.2.

The JS console throws an "Cannot read property 'element' of undefined" error when I try to pick another color, so the image won't change.

The critical line is in this screenshot:
bildschirmfoto 2017-10-27 um 10 38 37

I should note that we also use Color Swatches Pro from Amasty, however this is a pure extension without modifying the actual swatch-renderer.js logic. Do you have experienced this issue as well?

Base price result wrong when prices in backend catalog are excl. tax

Hi,
when prices in backend catalog are setup as excluding tax. The baseprice module picks up that price and calculates the baseprice on that. Sadly though the result shown is incorrect if there are taxes applied to the price in the frontend. Obviously the applied Tax is not taken into account.

Example in the picture: backend catalog price is 13.44€ ex. tax included in the frontend price is 19%. The product amount for base price calculation is 30ml and the reference amount is 1ml.

Magento Version 2.1.3, Module Version 1.0.4

price-ex-tax

Double display of the base price

Hi,

First of all, thank you for sharing for free this module. It helps me in a current project.
I discovered a display issue, the Base Price is displayed twice on the product view page as you can see below:

  • Magento version 2.1.1
  • Luma Theme

capture d ecran 2016-10-06 a 15 41 12

Magento 2.3

Hey,

I think this should run under 2.3. Can you update the composer.json?

Regards
Marcus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.