Fusion360

# TXT COMMANDS
##### Show Unconstrained Geo:
```
Sketch.ShowUnderconstrained
```

Joomla debugging with XDebug and Visual Studio Code

Joomla debugging with XDebug and Visual Studio Code on Windows
# Xdebug Setup for Joomla and VS Code on Windows

## Step 1: Install Xdebug

1. Copy `phpinfo()` output and paste it into [Xdebug Wizard](https://xdebug.org/wizard).
2. Download `xdebug.dll`.
3. Copy the DLL to your PHP `ext` folder.
4. Add the following configuration to your `php.ini`:

```ini
[xdebug]
zend_extension = xdebug
xdebug.mode = develop,debug
xdebug.start_with_request = yes
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.var_display_max_depth = 5
xdebug.var_display_ma

Elementor Register

/* Per Elementor che su Register non va neanche a spinta e in discesa,
 * in php extension:
 * disattivato: ioncube_loader
 * e attivato: opcache
 */
define('ELEMENTOR_LOAD_ICON_MANAGER_EARLY', true);
define('ELEMENTOR_EDITOR_BREAKPOINTS', true);
define('ELEMENTOR_DISABLE_ISOLATION', true);
/* E se serve
 * imposta Memory Limit
 */
define('WP_MEMORY_LIMIT', '512M');
define('WP_MAX_MEMORY_LIMIT', '512M');

Nosto Dynamic Cards

Source: https://docs.nosto.com/shopify/styling-options-dynamic-product-cards

# Styling Options - Dynamic Product Cards

## What Dynamic Product Cards are

Our `DynamicCard` Web Component offers a clean, flexible way to render Shopify product cards within Nosto-powered experiences, by fully deferring product markup to Shopify. This is especially useful for merchants who want their storefront's visual identity and product logic to remain unified, whilte still utilising Nosto's Personalization cap

3562. Maximum Profit from Trading Stocks with Discounts

You are given an integer n, representing the number of employees in a company. Each employee is assigned a unique ID from 1 to n, and employee 1 is the CEO. You are given two 1-based integer arrays, present and future, each of length n, where: present[i] represents the current price at which the ith employee can buy a stock today. future[i] represents the expected price at which the ith employee can sell the stock tomorrow. The company's hierarchy is represented by a 2D integer array hierarchy, where hierarchy[i] = [ui, vi] means that employee ui is the direct boss of employee vi. Additionally, you have an integer budget representing the total funds available for investment. However, the company has a discount policy: if an employee's direct boss purchases their own stock, then the employee can buy their stock at half the original price (floor(present[v] / 2)). Return the maximum profit that can be achieved without exceeding the given budget. Note: You may buy each stock at most once. You cannot use any profit earned from future stock prices to fund additional investments and must buy only from budget.
/**
 * @param {number} n
 * @param {number[]} present
 * @param {number[]} future
 * @param {number[][]} hierarchy
 * @param {number} budget
 * @return {number}
 */
var maxProfit = function(n, present, future, hierarchy, budget) {
  const employeeCount = n;
  const budgetLimit = budget;
  const budgetStride = budgetLimit + 1;

  // Sentinel value for unreachable DP states
  const MIN_PROFIT = -1_000_000_000;

  // Price arrays (1-indexed by employee ID for convenience)
  const presentPrice = new

ECODROP - update_so_bal_edit

salesorderID = salesorder.get("salesorder_id");
organizationID = organization.get("organization_id");
invTot = 0.0;
resp = zoho.books.getRecordsByID("Salesorders",organizationID,salesorderID).get("salesorder");
for each  invoice in resp.get("invoices")
{
	invTot = invTot + invoice.toMap().get("total");
}
balance = salesorder.get("total").toDecimal() - invTot;
updateMap = Map();
updateMap.put("custom_fields",{{"customfield_id":"337859000000099002","value":balance}});
zoho.books.updateR

ECODROP - update_so_bal_create

salesorderID = salesorder.get("salesorder_id");
organizationID = organization.get("organization_id");
updateMap = Map();
updateMap.put("custom_fields",{{"customfield_id":"337859000000099002","value":salesorder.get("total")}});
info zoho.books.updateRecord("Salesorders",organizationID,salesorderID,updateMap);

ECODROP - SO-Books to CRM

void invokeCRMFunction(int custID)
{
organizationID = "20085137075";
contactResp = zoho.books.getRecordsByID("Contacts",organizationID,custID,"books").get("contact");
zcrmID = contactResp.toMap().get("zcrm_account_id");
paramMap = Map();
paramMap.put("crmID",zcrmID);
paramMap.put("booksCustID",custID);
// info zcrmID;
resp = invokeurl
[
	url :"https://www.zohoapis.eu/crm/v2/functions/update_account_pending_amount/actions/execute?auth_type=apikey&zapikey=1003.05128f2623f44bb2f32c77a730

ECODROP - Invoice Books to CRM

void invokeCRMFunction(int custID)
{
organizationID = "20085137075";
contactResp = zoho.books.getRecordsByID("Contacts",organizationID,custID,"books").get("contact");
zcrmID = contactResp.toMap().get("zcrm_account_id");
paramMap = Map();
paramMap.put("crmID",zcrmID);
paramMap.put("booksCustID",custID);
// info zcrmID;
resp = invokeurl
[
	url :"https://www.zohoapis.eu/crm/v2/functions/update_account_pending_amount/actions/execute?auth_type=apikey&zapikey=1003.05128f2623f44bb2f32c77a730

ECODROP - Génération lien Google Maps

/*
	Function Name : Generate_Google_Maps_URL
	InputArguments : 
		oppID ( Deal ID)
		addresse
		codePostal
		ville
	Description: This function generate a Google Maps link
	Created On : 24/11/2022
	Tested and deployed by: Léonard
*/
lienGoogle = "https://www.google.fr/maps/place/" + ifnull(addresse,"") + "," + ifnull(codePostal,"") + "," + ifnull(ville,"");
updateDeal = Map();
updateDeal.put("Lien_adresse_du_chantier",lienGoogle);
updateResp = zoho.crm.updateRecord("Deals",oppID,upd

ECODROP - Generate Payment Link

/*
Function Name: Generate Payment Link
Input Arguments:String total,String devisNo
*/
orgId = "20085137075";
resp = invokeurl
[
	url :"https://books.zoho.eu/api/v3/estimates"
	type :GET
	parameters:{"search_text":devisNo}
	connection:"booksapi"
];
if(resp.get("estimates").size() == 1)
{
	estimateMap = resp.get("estimates").get(0).toMap();
	estimateID = estimateMap.get("estimate_id");
	booksCustID = estimateMap.get("customer_id");
	paymentAmount = total.toDecimal();
	/*paymentA

ECODROP - Deal Name Standardizer

/*
Function Name :Deal Name Standardizer
Input Arguments :int dealID,String oppNo,String accountName,String codePostal,String ville,String address,String firstName,String lastName
*/
if(accountName != null && accountName != "")
{
	dealName = oppNo + "-" + accountName + "-" + ifnull(codePostal,"") + "-" + ifnull(ville,"") + "-" + ifnull(address,"");
}
else if(lastName != null && lastName != "")
{
	dealName = oppNo + "-" + firstName + " " + lastName + "-" + ifnull(codePostal,"") + "-" + 

ECODROP - Créer lien de paiement

orgID = "20085137075";
paymentMap = Map();
paymentMap.put("customer_id",337859000000049093);
paymentMap.put("payment_amount",1000.00);
paymentMap.put("description","Test");
paymentMap.put("expiry_time","2023-01-01");
dataList = List();
dataList.addAll(paymentMap.toList());
paymentResp = invokeurl
[
	url :"https://books.zoho.eu/api/v3/paymentlinks?organization_id=" + orgID
	type :POST
	parameters:dataList + ""
	connection:"booksapi"
];
info paymentResp.get("payment_link").get("url"

ECODROP - Création enregistrements formulaire

/*
	Function Name : Create_form_records
	InputArguments : 
		formID ( Formulaire ID)
	Description: This function create records based on form received and best logical to don't create duplicates
	Created On : 29/11/2022
	Tested and deployed by: Léonard
*/
dealMap = Map();
idf = {"75","77","78","91","92","93","94","95"};
formRecord = zoho.crm.getRecordById("Formulaires",formID,Map(),"crmapi");
dealMap.put("Deal_Name","Demande formulaire");
dealMap.put("Type_de_besoin",formRecord.get("

ECODROP - Changement de pipeline

/*
	Function Name : Change_pipeline
	InputArguments : 
		oppID ( Deal ID)
	Description: This function change Pipeline and stage to "Demande de prix"
	Created On : 06/12/2022
	Tested and deployed by: Léonard
*/
opportunite = zoho.crm.getRecordById("Deals",oppID,Map(),"crmapi");
if(opportunite.get("Stage") == "Potentiel")
{
	dealMap = Map();
	dealMap.put("id",oppID);
	dealMap.put("Pipeline","Demande de prix log");
	dealMap.put("Stage","Demande de prix");
	// MAJ de l'opportunité par

Liquid, Section - Tabs-component with accordion from metaobject

{{ 'tabs-component.css' | asset_url | stylesheet_tag }}
{{ 'component-accordion.css' | asset_url | stylesheet_tag }}
{{ 'main-faq.css' | asset_url | stylesheet_tag }}

{%- style -%}
  .section-{{ section.id }}-padding {
  padding-top: {{ section.settings.padding_top | times: 0.75 | round: 0 }}px;
  }

  .section-{{ section.id }}-padding {
  padding-bottom: {{ section.settings.padding_bottom | times: 0.75 | round: 0 }}px;
  }

  @media screen and (min-width: 750px) {
  .section-{{ s