mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 05:57:44 -04:00 
			
		
		
		
	Company Import|Export for purchase orders
This commit is contained in:
		
							parent
							
								
									76b307d20f
								
							
						
					
					
						commit
						5246846018
					
				| @ -400,6 +400,7 @@ class CreateSingleAccount extends Command | ||||
|         $vendor = Project::factory()->create([ | ||||
|                 'user_id' => $client->user->id, | ||||
|                 'company_id' => $client->company->id, | ||||
|                 'client_id' => $client->id, | ||||
|             ]); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -20,6 +20,7 @@ use App\Mail\DownloadInvoices; | ||||
| use App\Models\Company; | ||||
| use App\Models\CreditInvitation; | ||||
| use App\Models\InvoiceInvitation; | ||||
| use App\Models\PurchaseOrderInvitation; | ||||
| use App\Models\QuoteInvitation; | ||||
| use App\Models\RecurringInvoice; | ||||
| use App\Models\RecurringInvoiceInvitation; | ||||
| @ -32,8 +33,8 @@ use Illuminate\Contracts\Queue\ShouldQueue; | ||||
| use Illuminate\Foundation\Bus\Dispatchable; | ||||
| use Illuminate\Queue\InteractsWithQueue; | ||||
| use Illuminate\Queue\SerializesModels; | ||||
| use Illuminate\Support\Facades\Storage; | ||||
| use Illuminate\Support\Facades\App; | ||||
| use Illuminate\Support\Facades\Storage; | ||||
| 
 | ||||
| class CompanyExport implements ShouldQueue | ||||
| { | ||||
| @ -424,9 +425,9 @@ class CompanyExport implements ShouldQueue | ||||
|         $this->export_data['vendor_contacts'] = VendorContact::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($vendor){ | ||||
| 
 | ||||
|             $vendor = $this->transformBasicEntities($vendor); | ||||
|             $vendor->vendor_id = $this->encodePrimaryKey($vendor->vendor_id); | ||||
|             $vendor = $this->transformArrayOfKeys($vendor, ['vendor_id']); | ||||
| 
 | ||||
|             return $vendor->makeVisible(['id']); | ||||
|             return $vendor->makeVisible(['id','user_id']); | ||||
| 
 | ||||
|         })->all(); | ||||
| 
 | ||||
| @ -439,6 +440,31 @@ class CompanyExport implements ShouldQueue | ||||
| 
 | ||||
|         })->makeHidden(['id'])->all(); | ||||
| 
 | ||||
|         $this->export_data['purchase_orders'] = $this->company->purchase_orders()->orderBy('number', 'DESC')->cursor()->map(function ($purchase_order){ | ||||
| 
 | ||||
|             $purchase_order = $this->transformBasicEntities($purchase_order); | ||||
|             $purchase_order = $this->transformArrayOfKeys($purchase_order, ['expense_id','client_id', 'vendor_id', 'project_id', 'design_id', 'subscription_id','project_id']); | ||||
| 
 | ||||
|             return $purchase_order->makeVisible(['id', | ||||
|                                         'private_notes', | ||||
|                                         'user_id', | ||||
|                                         'client_id', | ||||
|                                         'vendor_id', | ||||
|                                         'company_id',]); | ||||
| 
 | ||||
|         })->all(); | ||||
| 
 | ||||
| 
 | ||||
|         $this->export_data['purchase_order_invitations'] = PurchaseOrderInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($purchase_order){ | ||||
| 
 | ||||
|             $purchase_order = $this->transformArrayOfKeys($purchase_order, ['company_id', 'user_id', 'vendor_contact_id', 'purchase_order_id']); | ||||
| 
 | ||||
|             return $purchase_order->makeVisible(['id']); | ||||
| 
 | ||||
|         })->all(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         //write to tmp and email to owner();
 | ||||
|          | ||||
|         $this->zipAndSend();   | ||||
|  | ||||
| @ -45,6 +45,8 @@ use App\Models\PaymentTerm; | ||||
| use App\Models\Paymentable; | ||||
| use App\Models\Product; | ||||
| use App\Models\Project; | ||||
| use App\Models\PurchaseOrder; | ||||
| use App\Models\PurchaseOrderInvitation; | ||||
| use App\Models\Quote; | ||||
| use App\Models\QuoteInvitation; | ||||
| use App\Models\RecurringExpense; | ||||
| @ -74,7 +76,6 @@ use Illuminate\Support\Str; | ||||
| use JsonMachine\JsonDecoder\ExtJsonDecoder; | ||||
| use JsonMachine\JsonMachine; | ||||
| use ZipArchive; | ||||
| 
 | ||||
| use function GuzzleHttp\json_encode; | ||||
| 
 | ||||
| class CompanyImport implements ShouldQueue | ||||
| @ -122,6 +123,7 @@ class CompanyImport implements ShouldQueue | ||||
|         'clients', | ||||
|         'client_contacts', | ||||
|         'vendors', | ||||
|         'vendor_contacts', | ||||
|         'projects', | ||||
|         'products', | ||||
|         'company_gateways', | ||||
| @ -147,6 +149,8 @@ class CompanyImport implements ShouldQueue | ||||
|         'documents', | ||||
|         'webhooks', | ||||
|         'system_logs', | ||||
|         'purchase_orders', | ||||
|         'purchase_order_invitations' | ||||
|     ]; | ||||
| 
 | ||||
|     private $company_properties = [ | ||||
| @ -454,7 +458,7 @@ class CompanyImport implements ShouldQueue | ||||
|         $settings->ticket_number_counter = 1; | ||||
|         $settings->payment_number_counter = 1; | ||||
|         $settings->project_number_counter = 1; | ||||
| 
 | ||||
|         $settings->purchase_order_counter = 1; | ||||
|         $this->company->settings = $co->settings; | ||||
|         // $this->company->settings = $this->backup_file->company->settings;
 | ||||
|         $this->company->save(); | ||||
| @ -471,6 +475,7 @@ class CompanyImport implements ShouldQueue | ||||
|         $this->company->vendors()->forceDelete(); | ||||
|         $this->company->expenses()->forceDelete(); | ||||
|         $this->company->subscriptions()->forceDelete(); | ||||
|         $this->company->purchase_orders()->forceDelete(); | ||||
| 
 | ||||
|         $this->company->save(); | ||||
| 
 | ||||
| @ -649,6 +654,19 @@ class CompanyImport implements ShouldQueue | ||||
|         return $this; | ||||
|     } | ||||
| 
 | ||||
|     private function import_vendor_contacts() | ||||
|     { | ||||
| 
 | ||||
|         $this->genericImport(VendorContact::class,  | ||||
|             ['user_id', 'company_id', 'id', 'hashed_id','company','assigned_user_id'],  | ||||
|             [['users' => 'user_id'], ['vendors' => 'vendor_id']],  | ||||
|             'vendor_contacts', | ||||
|             'email'); | ||||
| 
 | ||||
|         return $this; | ||||
|          | ||||
|     } | ||||
| 
 | ||||
|     private function import_projects() | ||||
|     { | ||||
| 
 | ||||
| @ -796,6 +814,42 @@ class CompanyImport implements ShouldQueue | ||||
|         return $this;         | ||||
|     } | ||||
| 
 | ||||
|     private function import_purchase_orders() | ||||
|     { | ||||
| 
 | ||||
|         $this->genericImport(PurchaseOrder::class,  | ||||
|             ['user_id', 'company_id', 'id', 'hashed_id', 'recurring_id','status', 'vendor_id', 'subscription_id','client_id'],  | ||||
|             [ | ||||
|                 ['users' => 'user_id'],  | ||||
|                 ['users' => 'assigned_user_id'],  | ||||
|                 ['recurring_invoices' => 'recurring_id'], | ||||
|                 ['projects' => 'project_id'], | ||||
|                 ['vendors' => 'vendor_id'], | ||||
|             ],  | ||||
|             'purchase_orders', | ||||
|             'number'); | ||||
| 
 | ||||
|         return $this;         | ||||
|     } | ||||
| 
 | ||||
|     private function import_purchase_order_invitations() | ||||
|     { | ||||
| 
 | ||||
| 
 | ||||
|         $this->genericImport(PurchaseOrderInvitation::class,  | ||||
|             ['user_id', 'vendor_contact_id', 'company_id', 'id', 'hashed_id', 'purchase_order_id'],  | ||||
|             [ | ||||
|                 ['users' => 'user_id'],  | ||||
|                 ['purchase_orders' => 'purchase_order_id'], | ||||
|                 ['vendor_contacts' => 'vendor_contact_id'], | ||||
|             ],  | ||||
|             'purchase_order_invitations', | ||||
|             'key'); | ||||
| 
 | ||||
|         return $this;         | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private function import_quotes() | ||||
|     { | ||||
| 
 | ||||
| @ -1425,6 +1479,13 @@ class CompanyImport implements ShouldQueue | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|                 $new_obj->number = $this->getNextInvoiceNumber($client = Client::withTrashed()->find($obj_array['client_id']),$new_obj); | ||||
|             } | ||||
|             elseif($class == 'App\Models\PurchaseOrder' && is_null($obj->{$match_key})){ | ||||
|                 $new_obj = new PurchaseOrder(); | ||||
|                 $new_obj->company_id = $this->company->id; | ||||
|                 $new_obj->fill($obj_array); | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|                 $new_obj->number = $this->getNextPurchaseOrderNumber($new_obj); | ||||
|             } | ||||
|             elseif($class == 'App\Models\Payment' && is_null($obj->{$match_key})){ | ||||
|                 $new_obj = new Payment(); | ||||
|                 $new_obj->company_id = $this->company->id; | ||||
| @ -1445,6 +1506,12 @@ class CompanyImport implements ShouldQueue | ||||
|                 $new_obj->fill($obj_array); | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|             } | ||||
|             elseif($class == 'App\Models\VendorContact'){ | ||||
|                 $new_obj = new VendorContact(); | ||||
|                 $new_obj->company_id = $this->company->id; | ||||
|                 $new_obj->fill($obj_array); | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|             } | ||||
|             elseif($class == 'App\Models\RecurringExpense' && is_null($obj->{$match_key})){ | ||||
|                 $new_obj = new RecurringExpense(); | ||||
|                 $new_obj->company_id = $this->company->id; | ||||
| @ -1466,6 +1533,13 @@ class CompanyImport implements ShouldQueue | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|                 $new_obj->number = $this->getNextTaskNumber($new_obj);    | ||||
|             } | ||||
|             elseif($class == 'App\Models\Vendor' && is_null($obj->{$match_key})){ | ||||
|                 $new_obj = new Vendor(); | ||||
|                 $new_obj->company_id = $this->company->id; | ||||
|                 $new_obj->fill($obj_array); | ||||
|                 $new_obj->save(['timestamps' => false]); | ||||
|                 $new_obj->number = $this->getNextVendorNumber($new_obj);    | ||||
|             } | ||||
|             elseif($class == 'App\Models\CompanyLedger'){ | ||||
|                 $new_obj = $class::firstOrNew( | ||||
|                         [$match_key => $obj->{$match_key}, 'company_id' => $this->company->id], | ||||
|  | ||||
| @ -32,7 +32,6 @@ class PurchaseOrder extends BaseModel | ||||
|     protected $fillable = [ | ||||
|         'number', | ||||
|         'discount', | ||||
|         'company_id', | ||||
|         'status_id', | ||||
|         'last_sent_date', | ||||
|         'is_deleted', | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user