 in `vendor`.
<issue_comment>username_0: But any chance to get the plugin work inside an other plugin?
<issue_comment>username_1: The plugin was not designed for that. It's possible but I don't recommend it at all.

I've pushed an update to the `develop` branch that will correctly install the plugin in `wp-content/plugins`. The only potential issue is the duplication of some vendor directory contents in both the site root and in the plugin root.
<issue_comment>username_1: And yes, you do need the `"minimum-stability":"dev"`. Good advice.
<issue_comment>username_0: Ok thank for your help.

So finaly i choose to use [TGM Plugin Activation](http://tgmpluginactivation.com/) to suggest to add github updater
<issue_comment>username_1: That works.

I wrote [WP Dependency Installer](https://github.com/username_1/wp-dependency-installer) as a lighter weight option to TGMPA.
<issue_comment>username_1: If you wanted to use my framework all you would need  to do is the following.

`composer require username_1/wp-dependency-installer:"^2"`

Add a `wp-dependencies.json` file to your plugin root with the following.

```json
[
  {
    "name": "GitHub Updater",
    "host": "github",
    "slug": "github-updater/github-updater.php",
    "uri": "username_1/github-updater",
    "branch": "master",
    "optional": false,
    "token": null
  }
]
```

Put the following after you have done your `require_once( __DIR__. '/vendor/autoload.php' );`
```php
WP_Dependency_Installer::instance()->run( __DIR__ );
```<issue_closed><?php

namespace App\Modules\Product;
use App\Core\BaseRequest as BaseRequest;
use App\Core\Response;
use App\Models\ProductStock;
use App\Models\ProductVariant;
use Auth;

class AddStockRequest extends BaseRequest{
    public $invoice_date;
    public $invoice_number;
    public $purchase_order;
    public $cost_price;
    public $sale_price;
    public $margin;
    public $notes;
    public $product_id;
    public $variant_id;
    public $quantity;
}

class AddStockRequestValidator {
    public function GetRules(){
         return [
            'invoice_date' =>'required',
            'invoice_number' =>'required|alpha_num',
            // 'purchase_order' =>'required|alpha_num',
            'cost_price' =>'required|numeric',
           'sale_price' =>'required|numeric',
            //'margin' => 'numeric',
            // 'notes' =>'required|string',
            'product_id' =>'required|numeric',
            'variant_id' => 'numeric',
            'quantity' =>'required|numeric',
        ];
    }
}

class AddStockRequestHandler {

    public function Serve($request){

        try{
			if($request->quantity > 0){
				$productStock = new ProductStock();
				$productStock->invoice_date = $request->invoice_date;
				$productStock->invoice_number = $request->invoice_number;
				$productStock->purchase_order = $request->purchase_order;
				$productStock->cost_price = $request->cost_price;
				$productStock->sale_price = $request->sale_price;
				$productStock->margin = $request->margin;
				$productStock->notes = $request->notes;
				$productStock->quantity = $request->quantity;
				$productStock->product_id = $request->product_id;
				$productStock->variant_id = $request->variant_id;
				$productStock->created = $productStock->updated = Auth::user()->id;
				$productStock->created_at = $productStock->updated_at = date('Y-m-d H:i:s');
				$productStock->is_remove = false;

				if($productStock->variant_id<=0){
					$quantity = 0;
					$productComposite = ProductStock::where('product_id',$request->product_id)->orderBy('quantity', 'desc')->first();
					if($productComposite!=null){
						$quantity = $productComposite->quantity;
					}
					$productStock->quantity = $quantity + $productStock->quantity;
				}
				$productStock->save();

				if($productStock->variant_id>0){
					$productVariant = ProductVariant::where('id',$productStock->variant_id)->first();
					$quantity = $productVariant->quantity;
					if(isset($productVariant->quantity) && $productVariant->quantity > 0){
						$quantity = $productVariant->quantity;
					}
					$productVariant->quantity = $quantity + $productStock->quantity;
					$productVariant->retail_price = $request->sale_price;
					$productVariant->supplier_price = $request->cost_price;

					$productVariant->save();
				}
				return new Response(true, $productStock);
			}else{
				return new Response(false, ['Invalid quantity provided']);
			}
		}catch(Exception $ex){
			return new Response(false, $ex);
		}
    }
} Japanese is among the most difficult languages most Westerners can ever learn. Most people touring Japan don't have the time to spend years learning Japanese before they go to Japan. I think a good effort before traveling to learn the basics and show that you respect the culture and language is the most you can expect. I think you're gatekeeping a bit too hard. Don't get me wrong, I love learning languages, but not knowing Japanese shouldn't be a bar to visiting Japan and trying to interact with locals.INTERNATIONAL WOMEN PHOTOGRAPHERS Mar 2019
Los Angeles - Hong Kong - Beijing: Cherry Li
From the age of 13, Cherry Li devoted herself to the art of photography, brewing magic in the darkroom as soon as she could escape school each day. After completing her BFA in photography from Art Center College of Design in Pasadena, California, she started travelling the world in search of visual stories.
She found her second love, food, while living in Paris. From then on, it has been a whirlwind of adventures in learning and telling authentic stories of people through the food they eat.
Cherry has won multiple awards and shot for numerous commercial and editorial.
Cherry is as fun to work with in the studio as she is in the wild - anywhere in the world. She is currently working on some personal documentary projects looking at food cultures from across the world, including one on rural Creole Mardi Gras food, and another on foraged Chinese food.
Tag your comment using @productionparadise to share with us!Twangfest 21 @ Off Broadway June 7-10. Doors open at 7, all ages for all shows. Tickets per day are $22 in advance.
Thursday, June 8 – We love our tribute bands, so we’ll be at the Old Rock House for Satisfaction, a Rolling Stones show. This is an internationally touring show, so while you can’t always get what you want in terms of the actual Stones, sometimes you might just find, you get what you need. 8, $12.
Friday, June 9 – And now for something completely different: Yes, that is that Jane Lynch (Glee, Hollywood Game Night, Best in Show) singing standards with that St. Louis Symphony at Powell Hall. Sure to be entertaining on many levels. 7:30, $35–$70.
What the Locals Know – For the third year, we get to take great joy in the Atomic Blues Fest at the Atomic Cowboy. It is the annual fundraiser supporting the great work that the St. Louis Blues Society’s Education Fund does. It’s filled with our best local blues players leaving it all on stage, and for a good cause. Starts at 3, $12.
Music Note of Note: If you can guess what important instrument Belgium-born Adolphe Sax (1814–1894) invented, then you’ll want to know about Saxquest. Not just a music instrument store in a cool part of town (Cherokee Street), it also features a museum of saxophones (including several Mr. Sax made himself). Fascinating, wonderful, and a little bonkers, this little-known hidden treasure is worth a visit.When my aunt died, her service dog was elderly and has health issues. She went to my aunt’s long time CNA. One issue was the woman who wound up being the