Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 11832daf5c | |||
| 79555f5647 | |||
| 1868013704 | |||
| 39cc13f155 | |||
| e636875797 | |||
| 260749337e | |||
| 20a3b556bb | |||
| fa0c58e42a | |||
| abbb94239d | |||
| d89ef43834 | |||
| f84ab2beda | |||
| 86d398abda | |||
| 883c65981b | |||
| 8eb96efa13 | |||
| e9973670ea | |||
| ef8d2d06df | |||
| 0b5bb520a7 | |||
| 233fb23cb8 | |||
| fa89f45cb8 | |||
| 4c656c0321 | |||
| 87c6ee2035 | |||
| aab190423f | |||
| 05e3e6bda6 | |||
| 1f299ed73e | |||
| 4ba9792fbe | |||
| f405511b6b | |||
| 8ad5eb3e59 | |||
| 3df8fa99f0 | |||
| cca97341e9 | |||
| 13195d06fd | |||
| 9b6e86b55c | |||
| 65cf7527b0 | |||
| f74d50439c | |||
| 28e7ca5a84 | |||
| 8f64da5bc7 | |||
| 25f537e730 | |||
| 6d8af3d9c0 | |||
| e56a46882d | |||
| 0476ffecdb | |||
| 47a0400a72 | |||
| de3417d557 | |||
| 83b546c1c5 | |||
| 04709dc1df | |||
| f48171dcab | |||
| 7b8362b64c | |||
| 188538651a | |||
| a9fc7e04e9 | |||
| 4812285512 | |||
| ec1fa8e90a | |||
| 3a1b432234 | |||
| 98f853128a | |||
| 276d2bc866 |
@@ -911,6 +911,15 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "doekman",
|
||||
"name": "Doeke Zanstra",
|
||||
"avatar_url": "https://avatars1.githubusercontent.com/u/1086388?v=4",
|
||||
"profile": "https://github.com/doekman",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[](https://travis-ci.org/snipe/snipe-it) [](https://crowdin.com/project/snipe-it) [](https://gitter.im/snipe/snipe-it?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://hub.docker.com/r/snipe/snipe-it/) [](https://twitter.com/snipeyhead) [](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
|
||||
[](#contributors) [](https://www.codetriage.com/snipe/snipe-it)
|
||||
[](#contributors) [](https://www.codetriage.com/snipe/snipe-it)
|
||||
|
||||
|
||||
## Snipe-IT - Open Source Asset Management System
|
||||
@@ -57,6 +57,7 @@ Since the release of the JSON REST API, several third-party developers have been
|
||||
- [Python Module](https://github.com/jbloomer/SnipeIT-PythonAPI) by [@jbloomer](https://github.com/jbloomer)
|
||||
- [SnipeSharp - .NET module in C#](https://github.com/barrycarey/SnipeSharp) by [@barrycarey](https://github.com/barrycarey)
|
||||
- [InQRy](https://github.com/Microsoft/InQRy) by [@Microsoft](https://github.com/Microsoft)
|
||||
- [SnipeitPS](https://github.com/snazy2000/SnipeitPS) by [@snazy2000](https://github.com/snazy2000) - Powershell API Wrapper for Snipe-it
|
||||
|
||||
As these were created by third-parties, Snipe-IT cannot provide support for these project, and you should contact the developers directly if you need assistance. Additionally, Snipe-IT makes no guarantees as to the reliability, accuracy or maintainability of these libraries. Use at your own risk. :)
|
||||
|
||||
@@ -82,6 +83,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
|
||||
| [<img src="https://avatars2.githubusercontent.com/u/2809241?v=4" width="110px;"/><br /><sub>Robin Temme</sub>](https://github.com/zwerch)<br />[💻](https://github.com/snipe/snipe-it/commits?author=zwerch "Code") | [<img src="https://avatars0.githubusercontent.com/u/6961695?v=4" width="110px;"/><br /><sub>Iman</sub>](https://github.com/imanghafoori1)<br />[💻](https://github.com/snipe/snipe-it/commits?author=imanghafoori1 "Code") | [<img src="https://avatars1.githubusercontent.com/u/6551003?v=4" width="110px;"/><br /><sub>Richard Hofman</sub>](https://github.com/richardhofman6)<br />[💻](https://github.com/snipe/snipe-it/commits?author=richardhofman6 "Code") | [<img src="https://avatars0.githubusercontent.com/u/3697569?v=4" width="110px;"/><br /><sub>gizzmojr</sub>](https://github.com/gizzmojr)<br />[💻](https://github.com/snipe/snipe-it/commits?author=gizzmojr "Code") | [<img src="https://avatars3.githubusercontent.com/u/404729?v=4" width="110px;"/><br /><sub>Jenny Li</sub>](https://github.com/imjennyli)<br />[📖](https://github.com/snipe/snipe-it/commits?author=imjennyli "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/869227?v=4" width="110px;"/><br /><sub>Geoff Young</sub>](https://github.com/GeoffYoung)<br />[💻](https://github.com/snipe/snipe-it/commits?author=GeoffYoung "Code") | [<img src="https://avatars3.githubusercontent.com/u/1068477?v=4" width="110px;"/><br /><sub>Elliot Blackburn</sub>](http://www.elliotblackburn.com)<br />[📖](https://github.com/snipe/snipe-it/commits?author=BlueHatbRit "Documentation") |
|
||||
| [<img src="https://avatars1.githubusercontent.com/u/6357451?v=4" width="110px;"/><br /><sub>Tõnis Ormisson</sub>](http://andmemasin.eu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=TonisOrmisson "Code") | [<img src="https://avatars0.githubusercontent.com/u/449411?v=4" width="110px;"/><br /><sub>Nicolai Essig</sub>](http://www.nicolai-essig.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=thakilla "Code") | [<img src="https://avatars1.githubusercontent.com/u/14809698?v=4" width="110px;"/><br /><sub>Danielle</sub>](https://github.com/techincolor)<br />[📖](https://github.com/snipe/snipe-it/commits?author=techincolor "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/18545156?v=4" width="110px;"/><br /><sub>Lawrence</sub>](https://github.com/TheVakman)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=TheVakman "Tests") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3ATheVakman "Bug reports") | [<img src="https://avatars1.githubusercontent.com/u/22473767?v=4" width="110px;"/><br /><sub>uknzaeinozpas</sub>](https://github.com/uknzaeinozpas)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Tests") [💻](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Code") | [<img src="https://avatars3.githubusercontent.com/u/422752?v=4" width="110px;"/><br /><sub>Ryan</sub>](https://github.com/Gelob)<br />[📖](https://github.com/snipe/snipe-it/commits?author=Gelob "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/10672546?v=4" width="110px;"/><br /><sub>vcordes79</sub>](https://github.com/vcordes79)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vcordes79 "Code") |
|
||||
| [<img src="https://avatars3.githubusercontent.com/u/27958330?v=4" width="110px;"/><br /><sub>fordster78</sub>](https://github.com/fordster78)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fordster78 "Code") | [<img src="https://avatars0.githubusercontent.com/u/34064225?v=4" width="110px;"/><br /><sub>CronKz</sub>](https://github.com/CronKz)<br />[💻](https://github.com/snipe/snipe-it/commits?author=CronKz "Code") | [<img src="https://avatars1.githubusercontent.com/u/585486?v=4" width="110px;"/><br /><sub>Tim Bishop</sub>](https://github.com/tdb)<br />[💻](https://github.com/snipe/snipe-it/commits?author=tdb "Code") | [<img src="https://avatars2.githubusercontent.com/u/5384694?v=4" width="110px;"/><br /><sub>Sean McIlvenna</sub>](https://www.seanmcilvenna.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=seanmcilvenna "Code") | [<img src="https://avatars3.githubusercontent.com/u/36515590?v=4" width="110px;"/><br /><sub>cepacs</sub>](https://github.com/cepacs)<br />[🐛](https://github.com/snipe/snipe-it/issues?q=author%3Acepacs "Bug reports") [📖](https://github.com/snipe/snipe-it/commits?author=cepacs "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/37537300?v=4" width="110px;"/><br /><sub>lea-mink</sub>](https://github.com/lea-mink)<br />[💻](https://github.com/snipe/snipe-it/commits?author=lea-mink "Code") | [<img src="https://avatars0.githubusercontent.com/u/7140719?v=4" width="110px;"/><br /><sub>Hannah Tinkler</sub>](https://github.com/hannahtinkler)<br />[💻](https://github.com/snipe/snipe-it/commits?author=hannahtinkler "Code") |
|
||||
| [<img src="https://avatars1.githubusercontent.com/u/1086388?v=4" width="110px;"/><br /><sub>Doeke Zanstra</sub>](https://github.com/doekman)<br />[💻](https://github.com/snipe/snipe-it/commits?author=doekman "Code") |
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
|
||||
|
||||
@@ -4,8 +4,10 @@ namespace App\Console\Commands;
|
||||
|
||||
|
||||
use App\Models\Asset;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Console\Command;
|
||||
use App\Notifications\ExpectedCheckinNotification;
|
||||
use App\Notifications\ExpectedCheckinAdminNotification;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class SendExpectedCheckinAlerts extends Command
|
||||
@@ -42,21 +44,28 @@ class SendExpectedCheckinAlerts extends Command
|
||||
*/
|
||||
public function fire()
|
||||
{
|
||||
|
||||
$settings = Setting::getSettings();
|
||||
$whenNotify = Carbon::now()->addDays(7);
|
||||
$assets = Asset::with('assignedTo')->whereNotNull('expected_checkin')->where('expected_checkin', '<=', $whenNotify)->get();
|
||||
$assets = Asset::with('assignedTo')->whereNotNull('assigned_to')->whereNotNull('expected_checkin')->where('expected_checkin', '<=', $whenNotify)->get();
|
||||
|
||||
$this->info($whenNotify.' is deadline');
|
||||
$this->info($assets->count().' assets');
|
||||
|
||||
foreach ($assets as $asset) {
|
||||
if ($asset->assignedTo && $asset->checkoutOutToUser()) {
|
||||
$asset->assignedTo->notify((new ExpectedCheckinNotification($asset)));
|
||||
//$this->info($asset);
|
||||
if ($asset->assigned && $asset->checkedOutToUser()) {
|
||||
$asset->assigned->notify((new ExpectedCheckinNotification($asset)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Send a rollup to the admin, if settings dictate
|
||||
$recipient = new \App\Models\Recipients\AlertRecipient();
|
||||
|
||||
if ($settings->alert_email!='') {
|
||||
$recipient->notify(new ExpectedCheckinAdminNotification($assets));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use App\Models\Asset;
|
||||
|
||||
class SyncAssetCounters extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'snipeit:counter-sync';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Syncs checkedout, checked in, and requested counters for assets';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$start = microtime(true);
|
||||
$assets = Asset::withCount('checkins', 'checkouts', 'userRequests')
|
||||
->withTrashed()->get();
|
||||
|
||||
if ($assets) {
|
||||
if ($assets->count() > 0) {
|
||||
$bar = $this->output->createProgressBar($assets->count());
|
||||
|
||||
foreach ($assets as $asset) {
|
||||
$asset->checkin_counter = (int) $asset->checkins_count;
|
||||
$asset->checkout_counter = (int) $asset->checkouts_count;
|
||||
$asset->requests_counter = (int) $asset->user_requests_count;
|
||||
$asset->unsetEventDispatcher();
|
||||
$asset->save();
|
||||
$output['info'][] = 'Asset: ' . $asset->id . ' has ' . $asset->checkin_counter . ' checkins, ' . $asset->checkout_counter . ' checkouts, and ' . $asset->requests_counter . ' requests';
|
||||
$bar->advance();
|
||||
}
|
||||
$bar->finish();
|
||||
|
||||
foreach ($output['info'] as $key => $output_text) {
|
||||
$this->info($output_text);
|
||||
}
|
||||
|
||||
$time_elapsed_secs = microtime(true) - $start;
|
||||
$this->info('Sync executed in ' . $time_elapsed_secs . ' seconds');
|
||||
|
||||
} else {
|
||||
$this->info('No assets to sync');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ class Kernel extends ConsoleKernel
|
||||
Commands\ResetDemoSettings::class,
|
||||
Commands\SyncAssetLocations::class,
|
||||
Commands\RegenerateAssetTags::class,
|
||||
Commands\SyncAssetCounters::class,
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
+10
-1
@@ -330,7 +330,14 @@ class Helper
|
||||
*/
|
||||
public static function categoryTypeList()
|
||||
{
|
||||
$category_types = array('' => '','accessory' => 'Accessory', 'asset' => 'Asset', 'consumable' => 'Consumable','component' => 'Component');
|
||||
$category_types = array(
|
||||
'' => '',
|
||||
'accessory' => 'Accessory',
|
||||
'asset' => 'Asset',
|
||||
'consumable' => 'Consumable',
|
||||
'component' => 'Component',
|
||||
'license' => 'License'
|
||||
);
|
||||
return $category_types;
|
||||
}
|
||||
|
||||
@@ -738,6 +745,7 @@ class Helper
|
||||
static $max_size = -1;
|
||||
|
||||
if ($max_size < 0) {
|
||||
|
||||
// Start with post_max_size.
|
||||
$post_max_size = Helper::parse_size(ini_get('post_max_size'));
|
||||
if ($post_max_size > 0) {
|
||||
@@ -751,6 +759,7 @@ class Helper
|
||||
$max_size = $upload_max;
|
||||
}
|
||||
}
|
||||
|
||||
return $max_size;
|
||||
}
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@ class AssetsController extends Controller
|
||||
'last_audit_date',
|
||||
'next_audit_date',
|
||||
'warranty_months',
|
||||
'checkouts_count',
|
||||
'checkins_count',
|
||||
'user_requests_count',
|
||||
'checkout_counter',
|
||||
'checkin_counter',
|
||||
'requests_counter',
|
||||
];
|
||||
|
||||
$filter = array();
|
||||
@@ -95,7 +95,7 @@ class AssetsController extends Controller
|
||||
|
||||
$assets = Company::scopeCompanyables(Asset::select('assets.*'),"company_id","assets")
|
||||
->with('location', 'assetstatus', 'assetlog', 'company', 'defaultLoc','assignedTo',
|
||||
'model.category', 'model.manufacturer', 'model.fieldset','supplier')->withCount('checkins', 'checkouts', 'userRequests');
|
||||
'model.category', 'model.manufacturer', 'model.fieldset','supplier');
|
||||
|
||||
|
||||
// These are used by the API to query against specific ID numbers.
|
||||
|
||||
@@ -21,10 +21,10 @@ class CategoriesController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorize('view', Category::class);
|
||||
$allowed_columns = ['id', 'name','category_type', 'category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count', 'image'];
|
||||
$allowed_columns = ['id', 'name','category_type', 'category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count','licenses_count', 'image'];
|
||||
|
||||
$categories = Category::select(['id', 'created_at', 'updated_at', 'name','category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email','image'])
|
||||
->withCount('assets', 'accessories', 'consumables', 'components');
|
||||
->withCount('assets', 'accessories', 'consumables', 'components','licenses');
|
||||
|
||||
if ($request->has('search')) {
|
||||
$categories = $categories->TextSearch($request->input('search'));
|
||||
|
||||
@@ -25,7 +25,7 @@ class LicensesController extends Controller
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorize('view', License::class);
|
||||
$licenses = Company::scopeCompanyables(License::with('company', 'manufacturer', 'freeSeats', 'supplier')->withCount('freeSeats'));
|
||||
$licenses = Company::scopeCompanyables(License::with('company', 'manufacturer', 'freeSeats', 'supplier','category')->withCount('freeSeats'));
|
||||
|
||||
|
||||
if ($request->has('company_id')) {
|
||||
@@ -64,6 +64,10 @@ class LicensesController extends Controller
|
||||
$licenses->where('supplier_id','=',$request->input('supplier_id'));
|
||||
}
|
||||
|
||||
if ($request->has('category_i')) {
|
||||
$licenses->where('category_i','=',$request->input('category_i'));
|
||||
}
|
||||
|
||||
if ($request->has('depreciation_id')) {
|
||||
$licenses->where('depreciation_id','=',$request->input('depreciation_id'));
|
||||
}
|
||||
@@ -90,11 +94,14 @@ class LicensesController extends Controller
|
||||
case 'supplier':
|
||||
$licenses = $licenses->leftJoin('suppliers', 'licenses.supplier_id', '=', 'suppliers.id')->orderBy('suppliers.name', $order);
|
||||
break;
|
||||
case 'category':
|
||||
$licenses = $licenses->leftJoin('categories', 'licenses.category_id', '=', 'categories.id')->orderBy('categories.name', $order);
|
||||
break;
|
||||
case 'company':
|
||||
$licenses = $licenses->leftJoin('companies', 'licenses.company_id', '=', 'companies.id')->orderBy('companies.name', $order);
|
||||
break;
|
||||
default:
|
||||
$allowed_columns = ['id','name','purchase_cost','expiration_date','purchase_order','order_number','notes','purchase_date','serial','company','license_name','license_email','free_seats_count','seats'];
|
||||
$allowed_columns = ['id','name','purchase_cost','expiration_date','purchase_order','order_number','notes','purchase_date','serial','company','category','license_name','license_email','free_seats_count','seats'];
|
||||
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
|
||||
$licenses = $licenses->orderBy($sort, $order);
|
||||
break;
|
||||
|
||||
@@ -113,7 +113,7 @@ class AssetMaintenancesController extends Controller
|
||||
$assetMaintenance->notes = e($request->input('notes'));
|
||||
$asset = Asset::find(e($request->input('asset_id')));
|
||||
|
||||
if (!Company::isCurrentUserHasAccess($asset)) {
|
||||
if ((!Company::isCurrentUserHasAccess($asset)) && ($asset!=null)) {
|
||||
return static::getInsufficientPermissionsRedirect();
|
||||
}
|
||||
|
||||
|
||||
@@ -166,13 +166,13 @@ class CustomFieldsController extends Controller
|
||||
public function update(CustomFieldRequest $request, $id)
|
||||
{
|
||||
$field = CustomField::find($id);
|
||||
|
||||
$field->name = e($request->get("name"));
|
||||
$field->element = e($request->get("element"));
|
||||
$field->field_values = e($request->get("field_values"));
|
||||
$field->field_encrypted = e($request->get("field_encrypted", 0));
|
||||
$field->user_id = Auth::user()->id;
|
||||
$field->help_text = $request->get("help_text");
|
||||
$field->show_in_email = $request->get("show_in_email", 0);
|
||||
|
||||
if (!in_array(Input::get('format'), array_keys(CustomField::$PredefinedFormats))) {
|
||||
$field->format = e($request->get("custom_format"));
|
||||
@@ -180,7 +180,6 @@ class CustomFieldsController extends Controller
|
||||
$field->format = e($request->get("format"));
|
||||
}
|
||||
|
||||
|
||||
if ($field->save()) {
|
||||
return redirect()->route("fields.index")->with("success", trans('admin/custom_fields/message.field.update.success'));
|
||||
}
|
||||
|
||||
@@ -107,6 +107,7 @@ class LicensesController extends Controller
|
||||
$license->seats = $request->input('seats');
|
||||
$license->serial = $request->input('serial');
|
||||
$license->supplier_id = $request->input('supplier_id');
|
||||
$license->category_id = $request->input('category_id');
|
||||
$license->termination_date = $request->input('termination_date');
|
||||
$license->user_id = Auth::id();
|
||||
|
||||
@@ -182,6 +183,7 @@ class LicensesController extends Controller
|
||||
$license->seats = e($request->input('seats'));
|
||||
$license->manufacturer_id = $request->input('manufacturer_id');
|
||||
$license->supplier_id = $request->input('supplier_id');
|
||||
$license->category_id = $request->input('category_id');
|
||||
|
||||
if ($license->save()) {
|
||||
return redirect()->route('licenses.show', ['license' => $licenseId])->with('success', trans('admin/licenses/message.update.success'));
|
||||
@@ -420,7 +422,6 @@ class LicensesController extends Controller
|
||||
$return_to = Asset::find($licenseSeat->asset_id);
|
||||
}
|
||||
|
||||
\Log::debug($licenseSeat->assigned_to);
|
||||
// Update the asset data
|
||||
$licenseSeat->assigned_to = null;
|
||||
$licenseSeat->asset_id = null;
|
||||
|
||||
@@ -376,6 +376,7 @@ class ReportsController extends Controller
|
||||
if ($request->has('rtd_location')) {
|
||||
$header[] = trans('admin/hardware/form.default_location');
|
||||
}
|
||||
|
||||
if ($request->has('rtd_location_address')) {
|
||||
$header[] = trans('general.address');
|
||||
$header[] = trans('general.address');
|
||||
@@ -462,6 +463,11 @@ class ReportsController extends Controller
|
||||
$assets->where('assets.location_id', $request->input('by_location_id'));
|
||||
}
|
||||
|
||||
if ($request->has('by_rtd_location_id')) {
|
||||
\Log::debug('RTD location should match: '.$request->input('by_rtd_location_id'));
|
||||
$assets->where('assets.rtd_location_id', $request->input('by_rtd_location_id'));
|
||||
}
|
||||
|
||||
if ($request->has('by_supplier_id')) {
|
||||
$assets->where('assets.supplier_id', $request->input('by_supplier_id'));
|
||||
}
|
||||
@@ -497,6 +503,10 @@ class ReportsController extends Controller
|
||||
if (($request->has('created_start')) && ($request->has('created_end'))) {
|
||||
$assets->whereBetween('assets.created_at', [$request->input('created_start'), $request->input('created_end')]);
|
||||
}
|
||||
|
||||
if (($request->has('expected_checkin_start')) && ($request->has('expected_checkin_end'))) {
|
||||
$assets->whereBetween('assets.expected_checkin', [$request->input('expected_checkin_start'), $request->input('expected_checkin_end')]);
|
||||
}
|
||||
|
||||
$assets->orderBy('assets.created_at', 'ASC')->chunk(500, function($assets) use($handle, $customfields, $request) {
|
||||
|
||||
@@ -558,16 +568,16 @@ class ReportsController extends Controller
|
||||
}
|
||||
|
||||
if ($request->has('location_address')) {
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->address : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->address2 : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->city : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->state : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->country : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->zip : '';
|
||||
$row[] = ($asset->location) ? $asset->location->address : '';
|
||||
$row[] = ($asset->location) ? $asset->location->address2 : '';
|
||||
$row[] = ($asset->location) ? $asset->location->city : '';
|
||||
$row[] = ($asset->location) ? $asset->location->state : '';
|
||||
$row[] = ($asset->location) ? $asset->location->country : '';
|
||||
$row[] = ($asset->location) ? $asset->location->zip : '';
|
||||
}
|
||||
|
||||
if ($request->has('rtd_location')) {
|
||||
$row[] = ($asset->location) ? $asset->defaultLoc->present()->name() : '';
|
||||
$row[] = ($asset->defaultLoc) ? $asset->defaultLoc->present()->name() : '';
|
||||
}
|
||||
|
||||
if ($request->has('rtd_location_address')) {
|
||||
|
||||
@@ -347,6 +347,7 @@ class SettingsController extends Controller
|
||||
|
||||
$setting->default_eula_text = $request->input('default_eula_text');
|
||||
$setting->thumbnail_max_h = $request->input('thumbnail_max_h');
|
||||
$setting->privacy_policy_link = $request->input('privacy_policy_link');
|
||||
|
||||
if (Input::get('per_page')!='') {
|
||||
$setting->per_page = $request->input('per_page');
|
||||
|
||||
@@ -535,13 +535,13 @@ class UsersController extends Controller
|
||||
* @since [v1.0]
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function postBulkSave()
|
||||
public function postBulkSave(Request $request)
|
||||
{
|
||||
$this->authorize('update', User::class);
|
||||
|
||||
if ((!Input::has('ids')) || (count(Input::has('ids')) == 0)) {
|
||||
if ((!$request->has('ids')) || (count($request->input('ids')) == 0)) {
|
||||
return redirect()->back()->with('error', 'No users selected');
|
||||
} elseif ((!Input::has('status_id')) || (count(Input::has('status_id')) == 0)) {
|
||||
} elseif ((!$request->has('status_id')) || ($request->input('status_id')=='')) {
|
||||
return redirect()->route('users.index')->with('error', 'No status selected');
|
||||
} else {
|
||||
|
||||
|
||||
@@ -181,6 +181,8 @@ class ViewAssetsController extends Controller
|
||||
// If it's already requested, cancel the request.
|
||||
if ($asset->isRequestedBy(Auth::user())) {
|
||||
$asset->cancelRequest();
|
||||
$asset->decrement('requests_counter', 1);
|
||||
|
||||
$logaction->logaction('request canceled');
|
||||
$settings->notify(new RequestAssetCancelationNotification($data));
|
||||
return redirect()->route('requestable-assets')
|
||||
@@ -188,8 +190,8 @@ class ViewAssetsController extends Controller
|
||||
} else {
|
||||
|
||||
$logaction->logaction('requested');
|
||||
|
||||
$asset->request();
|
||||
$asset->increment('requests_counter', 1);
|
||||
$settings->notify(new RequestAssetNotification($data));
|
||||
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@ class AssetsTransformer
|
||||
'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'),
|
||||
'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'),
|
||||
'purchase_cost' => Helper::formatCurrencyOutput($asset->purchase_cost),
|
||||
'checkins_count' => (int) $asset->checkins_count,
|
||||
'checkouts_count' => (int) $asset->checkouts_count,
|
||||
'user_requests_count' => (int) $asset->user_requests_count,
|
||||
'checkin_counter' => (int) $asset->checkin_counter,
|
||||
'checkout_counter' => (int) $asset->checkout_counter,
|
||||
'requests_counter' => (int) $asset->requests_counter,
|
||||
'user_can_checkout' => (bool) $asset->availableForCheckout(),
|
||||
];
|
||||
|
||||
|
||||
@@ -30,10 +30,11 @@ class CategoriesTransformer
|
||||
'eula' => ($category->getEula()) ? true : false,
|
||||
'checkin_email' => ($category->checkin_email =='1') ? true : false,
|
||||
'require_acceptance' => ($category->require_acceptance =='1') ? true : false,
|
||||
'assets_count' => $category->assets_count,
|
||||
'accessories_count' => $category->accessories_count,
|
||||
'consumables_count' => $category->consumables_count,
|
||||
'components_count' => $category->components_count,
|
||||
'assets_count' => (int) $category->assets_count,
|
||||
'accessories_count' => (int) $category->accessories_count,
|
||||
'consumables_count' => (int) $category->consumables_count,
|
||||
'components_count' => (int) $category->components_count,
|
||||
'licenses_count' => (int) $category->licenses_count,
|
||||
'created_at' => Helper::getFormattedDateObject($category->created_at, 'datetime'),
|
||||
'updated_at' => Helper::getFormattedDateObject($category->updated_at, 'datetime'),
|
||||
];
|
||||
|
||||
@@ -38,6 +38,7 @@ class LicensesTransformer
|
||||
'license_email' => e($license->license_email),
|
||||
'maintained' => ($license->maintained == 1) ? true : false,
|
||||
'supplier' => ($license->supplier) ? ['id' => (int) $license->supplier->id,'name'=> e($license->supplier->name)] : null,
|
||||
'category' => ($license->category) ? ['id' => (int) $license->category->id,'name'=> e($license->category->name)] : null,
|
||||
'created_at' => Helper::getFormattedDateObject($license->created_at, 'datetime'),
|
||||
'updated_at' => Helper::getFormattedDateObject($license->updated_at, 'datetime'),
|
||||
'user_can_checkout' => (bool) ($license->free_seats_count > 0),
|
||||
|
||||
@@ -199,6 +199,7 @@ class Asset extends Depreciable
|
||||
|
||||
if ($this->save()) {
|
||||
$this->logCheckout($note, $target);
|
||||
$this->increment('checkout_counter', 1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -1060,7 +1061,7 @@ class Asset extends Depreciable
|
||||
}
|
||||
}
|
||||
|
||||
if (($fieldname!='category') && ($fieldname!='location') && ($fieldname!='supplier')
|
||||
if (($fieldname!='category') && ($fieldname!='model_number') && ($fieldname!='location') && ($fieldname!='supplier')
|
||||
&& ($fieldname!='status_label') && ($fieldname!='model') && ($fieldname!='company') && ($fieldname!='manufacturer')) {
|
||||
$query->orWhere('assets.'.$fieldname, 'LIKE', '%' . $search_val . '%');
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class Category extends SnipeModel
|
||||
'name' => 'required|min:1|max:255|unique_undeleted',
|
||||
'require_acceptance' => 'boolean',
|
||||
'use_default_eula' => 'boolean',
|
||||
'category_type' => 'required|in:asset,accessory,consumable,component',
|
||||
'category_type' => 'required|in:asset,accessory,consumable,component,license',
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -74,6 +74,11 @@ class Category extends SnipeModel
|
||||
return $this->hasMany('\App\Models\Accessory');
|
||||
}
|
||||
|
||||
public function licenses()
|
||||
{
|
||||
return $this->hasMany('\App\Models\License');
|
||||
}
|
||||
|
||||
public function consumables()
|
||||
{
|
||||
return $this->hasMany('\App\Models\Consumable');
|
||||
|
||||
@@ -41,7 +41,8 @@ class CustomField extends Model
|
||||
'format',
|
||||
'field_values',
|
||||
'field_encrypted',
|
||||
'help_text'
|
||||
'help_text',
|
||||
'show_in_email',
|
||||
];
|
||||
|
||||
// This is confusing, since it's actually the custom fields table that
|
||||
|
||||
+39
-2
@@ -16,6 +16,14 @@ use Watson\Validating\ValidatingTrait;
|
||||
class License extends Depreciable
|
||||
{
|
||||
protected $presenter = 'App\Presenters\LicensePresenter';
|
||||
|
||||
/**
|
||||
* Set static properties to determine which checkout/checkin handlers we should use
|
||||
*/
|
||||
public static $checkoutClass = CheckoutLicenseNotification::class;
|
||||
public static $checkinClass = CheckinLicenseNotification::class;
|
||||
|
||||
|
||||
use SoftDeletes;
|
||||
use CompanyableTrait;
|
||||
use Loggable, Presentable;
|
||||
@@ -41,6 +49,7 @@ class License extends Depreciable
|
||||
'license_email' => 'email|nullable|max:120',
|
||||
'license_name' => 'string|nullable|max:100',
|
||||
'notes' => 'string|nullable',
|
||||
'category_id' => 'required|exists:categories,id',
|
||||
'company_id' => 'integer|nullable',
|
||||
);
|
||||
|
||||
@@ -57,6 +66,7 @@ class License extends Depreciable
|
||||
'license_name', //actually licensed_to
|
||||
'maintained',
|
||||
'manufacturer_id',
|
||||
'category_id',
|
||||
'name',
|
||||
'notes',
|
||||
'order_number',
|
||||
@@ -83,7 +93,6 @@ class License extends Depreciable
|
||||
static::updating(function ($license) {
|
||||
$newSeatCount = $license->getAttributes()['seats'];
|
||||
$oldSeatCount = isset($license->getOriginal()['seats']) ? $license->getOriginal()['seats'] : 0;
|
||||
// dd($oldSeatCount.' '.$newSeatCount);
|
||||
return static::adjustSeatCount($license, $oldSeatCount, $newSeatCount);
|
||||
});
|
||||
}
|
||||
@@ -98,7 +107,7 @@ class License extends Depreciable
|
||||
$change = abs($oldSeats - $newSeats);
|
||||
if ($oldSeats > $newSeats) {
|
||||
$license->load('licenseseats.user');
|
||||
// dd("Here");
|
||||
|
||||
// Need to delete seats... lets see if if we have enough.
|
||||
$seatsAvailableForDelete = $license->licenseseats->reject(function ($seat) {
|
||||
return (!! $seat->assigned_to) || (!! $seat->asset_id);
|
||||
@@ -176,11 +185,39 @@ class License extends Depreciable
|
||||
return $this->belongsTo('\App\Models\Company', 'company_id');
|
||||
}
|
||||
|
||||
public function category()
|
||||
{
|
||||
return $this->belongsTo('\App\Models\Category', 'category_id');
|
||||
}
|
||||
|
||||
public function manufacturer()
|
||||
{
|
||||
return $this->belongsTo('\App\Models\Manufacturer', 'manufacturer_id');
|
||||
}
|
||||
|
||||
public function checkin_email()
|
||||
{
|
||||
return $this->model->category->checkin_email;
|
||||
}
|
||||
|
||||
public function requireAcceptance()
|
||||
{
|
||||
return $this->category->require_acceptance;
|
||||
}
|
||||
|
||||
public function getEula()
|
||||
{
|
||||
$Parsedown = new \Parsedown();
|
||||
|
||||
if ($this->category->eula_text) {
|
||||
return $Parsedown->text(e($this->category->eula_text));
|
||||
} elseif ($this->category->use_default_eula == '1') {
|
||||
return $Parsedown->text(e(Setting::getSettings()->default_eula_text));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the assigned user
|
||||
*/
|
||||
|
||||
+10
-1
@@ -55,7 +55,7 @@ trait Loggable
|
||||
if ($log->target_type == Location::class) {
|
||||
$log->location_id = $target->id;
|
||||
} elseif ($log->target_type == Asset::class) {
|
||||
$log->location_id = $target->rtd_location_id;
|
||||
$log->location_id = $target->location_id;
|
||||
} else {
|
||||
$log->location_id = $target->location_id;
|
||||
}
|
||||
@@ -121,8 +121,17 @@ trait Loggable
|
||||
$log->item_type = License::class;
|
||||
$log->item_id = $this->license_id;
|
||||
} else {
|
||||
|
||||
$log->item_type = static::class;
|
||||
$log->item_id = $this->id;
|
||||
|
||||
if (static::class == Asset::class) {
|
||||
if ($asset = Asset::find($log->item_id)) {
|
||||
\Log::debug('Increment the checkin count for asset: '.$log->item_id);
|
||||
$asset->increment('checkin_counter', 1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ class Setting extends Model
|
||||
'audit_warning_days' => 'numeric|nullable',
|
||||
'audit_interval' => 'numeric|nullable',
|
||||
'custom_forgot_pass_url' => 'url|nullable',
|
||||
'privacy_policy_link' => 'nullable|url'
|
||||
];
|
||||
|
||||
protected $fillable = ['site_name','email_domain','email_format','username_format'];
|
||||
|
||||
@@ -76,7 +76,7 @@ class CheckinAssetNotification extends Notification
|
||||
$fields = [
|
||||
trans('general.administrator') => '<'.$admin->present()->viewUrl().'|'.$admin->present()->fullName().'>',
|
||||
trans('general.status') => $item->assetstatus->name,
|
||||
trans('general.location') => $item->location->name,
|
||||
trans('general.location') => ($item->location) ? $item->location->name : '',
|
||||
];
|
||||
|
||||
return (new SlackMessage)
|
||||
|
||||
@@ -31,6 +31,7 @@ class CheckinLicenseNotification extends Notification
|
||||
$this->admin = $params['admin'];
|
||||
$this->note = '';
|
||||
$this->settings = $params['settings'];
|
||||
$this->target_type = $params['target_type'];
|
||||
|
||||
if (array_key_exists('note', $params)) {
|
||||
$this->note = $params['note'];
|
||||
@@ -53,7 +54,10 @@ class CheckinLicenseNotification extends Notification
|
||||
}
|
||||
|
||||
|
||||
$notifyBy[] = 'mail';
|
||||
if (($this->target_type == \App\Models\User::class) && (($this->item->requireAcceptance() == '1') || ($this->item->getEula())))
|
||||
{
|
||||
$notifyBy[] = 'mail';
|
||||
}
|
||||
|
||||
return $notifyBy;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ class CheckoutLicenseNotification extends Notification
|
||||
$this->note = '';
|
||||
$this->target_type = $params['target_type'];
|
||||
$this->settings = $params['settings'];
|
||||
$this->target_type = $params['target_type'];
|
||||
|
||||
if (array_key_exists('note', $params)) {
|
||||
$this->note = $params['note'];
|
||||
@@ -56,7 +57,8 @@ class CheckoutLicenseNotification extends Notification
|
||||
$notifyBy[] = 'slack';
|
||||
}
|
||||
|
||||
if ($this->target_type == \App\Models\User::class) {
|
||||
if (($this->target_type == \App\Models\User::class) && (($this->item->requireAcceptance() == '1') || ($this->item->getEula())))
|
||||
{
|
||||
$notifyBy[] = 'mail';
|
||||
}
|
||||
|
||||
@@ -97,12 +99,18 @@ class CheckoutLicenseNotification extends Notification
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
|
||||
$eula = method_exists($this->item, 'getEula') ? $this->item->getEula() : '';
|
||||
$req_accept = method_exists($this->item, 'requireAcceptance') ? $this->item->requireAcceptance() : 0;
|
||||
|
||||
return (new MailMessage)->markdown('notifications.markdown.checkout-license',
|
||||
[
|
||||
'item' => $this->item,
|
||||
'admin' => $this->admin,
|
||||
'note' => $this->note,
|
||||
'target' => $this->target,
|
||||
'eula' => $eula,
|
||||
'req_accept' => $req_accept,
|
||||
'accept_url' => url('/').'/account/accept-asset/'.$this->log_id,
|
||||
])
|
||||
->subject(trans('mail.Confirm_license_delivery'));
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Notifications;
|
||||
|
||||
use App\Models\Setting;
|
||||
use App\Models\SnipeModel;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class ExpectedCheckinAdminNotification extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
private $params;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @param $params
|
||||
*/
|
||||
public function __construct($params)
|
||||
{
|
||||
$this->assets = $params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
$notifyBy = [];
|
||||
$notifyBy[]='mail';
|
||||
return $notifyBy;
|
||||
}
|
||||
|
||||
public function toSlack($notifiable)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $asset
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($params)
|
||||
{
|
||||
|
||||
$message = (new MailMessage)->markdown('notifications.markdown.report-expected-checkins',
|
||||
[
|
||||
'assets' => $this->assets,
|
||||
])
|
||||
->subject('Expected asset checkin report');
|
||||
|
||||
return $message;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -182,21 +182,21 @@ class AssetPresenter extends Presenter
|
||||
"title" => trans('general.notes'),
|
||||
|
||||
], [
|
||||
"field" => "checkouts_count",
|
||||
"field" => "checkout_counter",
|
||||
"searchable" => false,
|
||||
"sortable" => true,
|
||||
"visible" => false,
|
||||
"title" => trans('general.checkouts_count')
|
||||
|
||||
],[
|
||||
"field" => "checkins_count",
|
||||
"field" => "checkin_counter",
|
||||
"searchable" => false,
|
||||
"sortable" => true,
|
||||
"visible" => false,
|
||||
"title" => trans('general.checkins_count')
|
||||
|
||||
], [
|
||||
"field" => "user_requests_count",
|
||||
"field" => "requests_counter",
|
||||
"searchable" => false,
|
||||
"sortable" => true,
|
||||
"visible" => false,
|
||||
|
||||
@@ -69,6 +69,12 @@ class CategoryPresenter extends Presenter
|
||||
"sortable" => true,
|
||||
"title" => trans('general.components'),
|
||||
"visible" => true
|
||||
], [
|
||||
"field" => "licenses_count",
|
||||
"searchable" => false,
|
||||
"sortable" => true,
|
||||
"title" => trans('general.licenses'),
|
||||
"visible" => true
|
||||
], [
|
||||
"field" => "eula",
|
||||
"searchable" => false,
|
||||
|
||||
@@ -61,6 +61,14 @@ class LicensePresenter extends Presenter
|
||||
"searchable" => true,
|
||||
"sortable" => true,
|
||||
"title" => trans('admin/licenses/form.to_name'),
|
||||
], [
|
||||
"field" => "category",
|
||||
"searchable" => true,
|
||||
"sortable" => true,
|
||||
"switchable" => true,
|
||||
"title" => trans('general.category'),
|
||||
"visible" => false,
|
||||
"formatter" => "categoriesLinkObjFormatter"
|
||||
], [
|
||||
"field" => "supplier",
|
||||
"searchable" => true,
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v4.3.0',
|
||||
'full_app_version' => 'v4.3.0 - build 3559-g9eab9ad40',
|
||||
'build_version' => '3559',
|
||||
'app_version' => 'v4.4.0',
|
||||
'full_app_version' => 'v4.4.0 - build 3630-ge63687579',
|
||||
'build_version' => '3630',
|
||||
'prerelease_version' => '',
|
||||
'hash_version' => 'g9eab9ad40',
|
||||
'full_hash' => 'v4.3.0-66-g9eab9ad40',
|
||||
'hash_version' => 'ge63687579',
|
||||
'full_hash' => 'v4.3.0-48-ge63687579',
|
||||
'branch' => 'master',
|
||||
);
|
||||
|
||||
@@ -114,3 +114,18 @@ $factory->state(App\Models\Category::class, 'consumable-ink-category', function
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
$factory->state(App\Models\Category::class, 'license-graphics-category', function ($faker) {
|
||||
return [
|
||||
'name' => 'Graphics Software',
|
||||
'category_type' => 'license',
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
$factory->state(App\Models\Category::class, 'license-office-category', function ($faker) {
|
||||
return [
|
||||
'name' => 'Office Software',
|
||||
'category_type' => 'license',
|
||||
];
|
||||
});
|
||||
|
||||
@@ -34,7 +34,8 @@ $factory->state(App\Models\License::class, 'photoshop', function ($faker) {
|
||||
'purchase_cost' => '299.99',
|
||||
'seats' => 10,
|
||||
'purchase_order' => '13503Q',
|
||||
'maintained' => true
|
||||
'maintained' => true,
|
||||
'category_id' => 14,
|
||||
];
|
||||
|
||||
return $data;
|
||||
@@ -49,6 +50,7 @@ $factory->state(App\Models\License::class, 'acrobat', function ($faker) {
|
||||
'manufacturer_id' => 9,
|
||||
'purchase_cost' => '29.99',
|
||||
'seats' => 10,
|
||||
'category_id' => 14,
|
||||
];
|
||||
|
||||
|
||||
@@ -62,6 +64,7 @@ $factory->state(App\Models\License::class, 'indesign', function ($faker) {
|
||||
'manufacturer_id' => 9,
|
||||
'purchase_cost' => '199.99',
|
||||
'seats' => 10,
|
||||
'category_id' => 14,
|
||||
];
|
||||
|
||||
|
||||
@@ -76,6 +79,7 @@ $factory->state(App\Models\License::class, 'office', function ($faker) {
|
||||
'manufacturer_id' => 2,
|
||||
'purchase_cost' => '49.99',
|
||||
'seats' => 20,
|
||||
'category_id' => 15,
|
||||
];
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
|
||||
class AddCategoryToLicenses extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
|
||||
Schema::table('licenses', function (Blueprint $table) {
|
||||
$table->integer('category_id')->nullable()->default(null);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('licenses', function (Blueprint $table) {
|
||||
$table->dropColumn('category_id');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use App\Models\Category;
|
||||
use App\Models\License;
|
||||
|
||||
class AddUpdateLicenseCategory extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
|
||||
// Create a new software category and assign all of the existing licenses to it
|
||||
$category = new Category;
|
||||
$category->name = 'Misc Software';
|
||||
$category->category_type = 'license';
|
||||
|
||||
if ($category->save()) {
|
||||
License::whereNull('category_id')->withTrashed()
|
||||
->update(['category_id' => $category->id]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
|
||||
App\Models\Category::where('name', 'Misc Software')->forceDelete();
|
||||
|
||||
License::whereNotNull('category_id')
|
||||
->update(['category_id' => null]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddGdprPrivacyFooter extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->char('privacy_policy_link')->nullable()->default(null);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('settings', function (Blueprint $table) {
|
||||
$table->dropColumn('privacy_policy_link');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddIndexes extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('action_logs', function (Blueprint $table) {
|
||||
$table->index(['target_id', 'target_type']);
|
||||
$table->index('created_at');
|
||||
$table->index(['item_type', 'item_id', 'action_type']);
|
||||
$table->index(['target_type', 'target_id', 'action_type']);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('action_logs', function (Blueprint $table) {
|
||||
$table->dropIndex(['target_id', 'target_type']);
|
||||
$table->dropIndex(['created_at']);
|
||||
$table->dropIndex(['item_type', 'item_id', 'action_type']);
|
||||
$table->dropIndex(['target_type', 'target_id', 'action_type']);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddIndexesToAssets extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('assets', function (Blueprint $table) {
|
||||
$table->index('created_at');
|
||||
$table->index(['deleted_at', 'status_id']);
|
||||
$table->index(['deleted_at', 'model_id']);
|
||||
$table->index(['deleted_at', 'assigned_type', 'assigned_to']);
|
||||
$table->index(['deleted_at', 'supplier_id']);
|
||||
$table->index(['deleted_at', 'location_id']);
|
||||
$table->index(['deleted_at', 'rtd_location_id']);
|
||||
$table->index(['deleted_at', 'asset_tag']);
|
||||
$table->index(['deleted_at', 'name']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('assets', function (Blueprint $table) {
|
||||
$table->dropIndex(['created_at']);
|
||||
$table->dropIndex(['deleted_at', 'status_id']);
|
||||
$table->dropIndex(['deleted_at', 'model_id']);
|
||||
$table->dropIndex(['deleted_at', 'assigned_type', 'assigned_to']);
|
||||
$table->dropIndex(['deleted_at', 'supplier_id']);
|
||||
$table->dropIndex(['deleted_at', 'location_id']);
|
||||
$table->dropIndex(['deleted_at', 'rtd_location_id']);
|
||||
$table->dropIndex(['deleted_at', 'asset_tag']);
|
||||
$table->dropIndex(['deleted_at', 'name']);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class DenormCountersOnAssets extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('assets', function (Blueprint $table) {
|
||||
$table->integer('checkin_counter')->default(0);
|
||||
$table->integer('checkout_counter')->default(0);
|
||||
$table->integer('requests_counter')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('assets', function (Blueprint $table) {
|
||||
$table->dropColumn('checkin_counter');
|
||||
$table->dropColumn('checkout_counter');
|
||||
$table->dropColumn('requests_counter');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use App\Models\Asset;
|
||||
|
||||
class AddFirstCounterTotalsToAssets extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
// This artisan call may take a while
|
||||
\Log::info('This could take a while.... ');
|
||||
Artisan::call('snipeit:counter-sync');
|
||||
$output = Artisan::output();
|
||||
\Log::info($output);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,8 @@ class CategorySeeder extends Seeder
|
||||
factory(Category::class, 1)->states('consumable-ink-category')->create(); // 11
|
||||
factory(Category::class, 1)->states('component-hdd-category')->create(); // 12
|
||||
factory(Category::class, 1)->states('component-ram-category')->create(); // 13
|
||||
factory(Category::class, 1)->states('license-graphics-category')->create(); // 14
|
||||
factory(Category::class, 1)->states('license-office-category')->create(); // 15
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategorieë help jou om jou items te organiseer. Sommige voorbeeldkategorieë kan wees "Desktops", "Laptops", "Mobile Phones", "Tablets", ensovoorts, maar jy kan kategorieë gebruik wat vir jou sin maak.',
|
||||
'asset_categories' => 'Bate kategorieë',
|
||||
'category_name' => 'Kategorie Naam',
|
||||
'checkin_email' => 'Stuur e-pos aan gebruiker op inskrywing.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Klone Kategorie',
|
||||
'create' => 'Skep Kategorie',
|
||||
'edit' => 'Wysig Kategorie',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Etikette per bladsy',
|
||||
'label_dimensions' => 'Etiketafmetings (duim)',
|
||||
'next_auto_tag_base' => 'Volgende outomatiese inkrement',
|
||||
'page_padding' => 'Bladsy marges (duim)',
|
||||
'purge' => 'Verwyder verwyderde rekords',
|
||||
'page_padding' => 'Bladsy marges (duim)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Verwyder verwyderde rekords',
|
||||
'labels_display_bgutter' => 'Etiket onderkant goot',
|
||||
'labels_display_sgutter' => 'Label side goot',
|
||||
'labels_fontsize' => 'Etiket lettergrootte',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'التصنيفات تساعدك على ترتيب الأصول. من الأمثلة على التصنيفات " حواسيب مكتبية "، " حواسيب محمولة "، "الهواتف النقالة "، "أجهزة لوحية " وهكذا، كما يمكنك استخدام التصنيفات بأي طريقة تناسبك.',
|
||||
'asset_categories' => 'تصنيفات الأصول',
|
||||
'category_name' => 'اسم التصنيف',
|
||||
'checkin_email' => 'إرسال إشعار للمستخدم عند الإدخال.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'نسخ التصنيف',
|
||||
'create' => 'إنشاء تصنيف',
|
||||
'edit' => 'تعديل التصنيف',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'عدد التسميات لكل صفحة',
|
||||
'label_dimensions' => 'أبعاد التسمية (بوصة)',
|
||||
'next_auto_tag_base' => 'الزيادة التلقائية التالية',
|
||||
'page_padding' => 'هوامش الصفحة (بوصة)',
|
||||
'purge' => 'تطهير السجلات المحذوفة',
|
||||
'page_padding' => 'هوامش الصفحة (بوصة)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'تطهير السجلات المحذوفة',
|
||||
'labels_display_bgutter' => 'الجزء السفلي للتسمية',
|
||||
'labels_display_sgutter' => 'الجزء الجانبي للتسمية',
|
||||
'labels_fontsize' => 'حجم خط التسمية',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Категориите помагат с организирането на вашите елементи. Някои примерни категории могат да бъдат "Настолни компютри","Лаптопи","Мобилни телефони","Таблети", и т.н., но може да използвате всяка категория, имаща смисъл за организацията ви.',
|
||||
'asset_categories' => 'Категории на активи',
|
||||
'category_name' => 'Име на категория',
|
||||
'checkin_email' => 'Изпращане на email до потребителя при вписване на активи.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Копиране на категория',
|
||||
'create' => 'Създаване на категория',
|
||||
'edit' => 'Редакция на категория',
|
||||
|
||||
@@ -28,5 +28,5 @@ return array(
|
||||
'create_fieldset' => 'Нов Fieldset',
|
||||
'create_field' => 'Ново персонализирано поле',
|
||||
'value_encrypted' => 'Стойността на това поле е криптирана в базата данни. Само администратор потребители ще бъде в състояние да видят дешифрираната стойност',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
'show_in_email' => 'Да се включи ли стойността на това поле в електронната поща, изпращана към потребителите? Криптираните полета не могат да бъдат включвани в изпращаните електронни пощи.',
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_assets_text' => 'Активите са елементи, проследен от сериен номер или етикет. По-често, те са елементи с висока стойност, където идентифицирането на специфичен елемент е от значение.',
|
||||
'archived' => 'Архивиран',
|
||||
'asset' => 'Актив',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'bulk_checkout' => 'Изписване на активи',
|
||||
'checkin' => 'Връщане на актив',
|
||||
'checkout' => 'Проверка на активите',
|
||||
'clone' => 'Копиране на актив',
|
||||
|
||||
@@ -14,5 +14,5 @@ return array(
|
||||
'view_models' => 'Преглед на моделите',
|
||||
'fieldset' => 'Полета',
|
||||
'no_custom_field' => 'Няма потребителски полета',
|
||||
'add_default_values' => 'Add default values',
|
||||
'add_default_values' => 'Добавяне на стойности по подразбиране',
|
||||
);
|
||||
|
||||
@@ -4,8 +4,8 @@ return array(
|
||||
'ad' => 'Активна директория',
|
||||
'ad_domain' => 'Домейн на активна директория',
|
||||
'ad_domain_help' => 'Това е понякога еднакво с вашия email домейн, но не винаги.',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'admin_cc_email' => 'CC електронна поща',
|
||||
'admin_cc_email_help' => 'Въведете допълнителни електронни адреси, ако желаете да се изпраща копие на електронните пощи при вписване и изписване на активи.',
|
||||
'is_ad' => 'Това е активна директория на сървър',
|
||||
'alert_email' => 'Изпращане на нотификации към',
|
||||
'alerts_enabled' => 'Включване на известията',
|
||||
@@ -109,8 +109,8 @@ return array(
|
||||
'show_alerts_in_menu' => 'Показва съобщения в главното меню',
|
||||
'show_archived_in_list' => 'Архивирани активи',
|
||||
'show_archived_in_list_text' => 'Показва архивираните активи в списъка "Всички активи"',
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'show_images_in_email' => 'Показване на изображения в електронните съобщения',
|
||||
'show_images_in_email_help' => 'Премахнете отметката, ако Вашата инсталация е достъпна единствено във вътрешната мрежа или през VPN.',
|
||||
'site_name' => 'Име на системата',
|
||||
'slack_botname' => 'Име на Slack bot',
|
||||
'slack_channel' => 'Slack канал',
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Етикети на страница',
|
||||
'label_dimensions' => 'Измерения на етикети (инчове)',
|
||||
'next_auto_tag_base' => 'Следващото автоматично увеличение',
|
||||
'page_padding' => 'Марж на страница (инчове)',
|
||||
'purge' => 'Пречисти изтрити записи',
|
||||
'page_padding' => 'Марж на страница (инчове)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Пречисти изтрити записи',
|
||||
'labels_display_bgutter' => 'Обозначаване на долен канал',
|
||||
'labels_display_sgutter' => 'Обозначаване на страничен канал',
|
||||
'labels_fontsize' => 'Обозначаване на размер на шрифта',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Потвърди',
|
||||
'upload' => 'Качване',
|
||||
'select_file' => 'Изберете файл...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Изберете файлове...',
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'activity_report' => 'Справка за дейностите',
|
||||
'address' => 'Aдрес',
|
||||
'admin' => 'Администриране',
|
||||
'administrator' => 'Administrator',
|
||||
'administrator' => 'Администратор',
|
||||
'add_seats' => 'Добавени работни места',
|
||||
'all_assets' => 'Всички активи',
|
||||
'all' => 'Всички',
|
||||
@@ -39,9 +39,9 @@
|
||||
'checkin' => 'Вписване',
|
||||
'checkin_from' => 'Форма за вписване',
|
||||
'checkout' => 'Изписване',
|
||||
'checkouts_count' => 'Checkouts',
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'checkouts_count' => 'Изписвания',
|
||||
'checkins_count' => 'Вписвания',
|
||||
'user_requests_count' => 'Заявки',
|
||||
'city' => 'Град',
|
||||
'click_here' => 'Натиснете тук',
|
||||
'clear_selection' => 'Изчистване на селектираното',
|
||||
@@ -68,7 +68,7 @@
|
||||
'debug_warning' => 'Предупреждение!',
|
||||
'debug_warning_text' => 'Това приложение се изпълнява в режим на производство с разрешено отстраняване на грешки. Това може да изложи чувствителни данни, ако приложението ви е достъпно за външния свят. Забранете режим отстраняване на грешки чрез задаване на стойността <code>APP_DEBUF</code> <code>.env</code> във файла <code>false</code>.',
|
||||
'delete' => 'Изтриване',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm' => 'Сигурни ли сте, че желаете изтриването на :item?',
|
||||
'deleted' => 'Изтрито',
|
||||
'delete_seats' => 'Изтрити работни места за лиценз',
|
||||
'departments' => 'Катедри',
|
||||
@@ -206,7 +206,7 @@
|
||||
'unknown_admin' => 'Непознат администратор',
|
||||
'username_format' => 'Формат на потребителско име',
|
||||
'update' => 'Обновяване',
|
||||
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar. Max upload size allowed is :size.',
|
||||
'upload_filetypes_help' => 'Допустимите типове файлове са png, gif, jpg, jpeg, doc, docx, pdf, txt, zip и rar. Максималният размер за качване е :size.',
|
||||
'uploaded' => 'Качен',
|
||||
'user' => 'Потребител',
|
||||
'accepted' => 'приет',
|
||||
|
||||
@@ -22,7 +22,7 @@ return array(
|
||||
'Confirm_Asset_Checkin' => 'Потвърдете вписване на актив.',
|
||||
'Confirm_Accessory_Checkin' => 'Потвърдете вписване на аксесоар.',
|
||||
'Confirm_accessory_delivery' => 'Потвърдете доставка на аксесоар.',
|
||||
'Confirm_license_delivery' => 'Confirm license delivery.',
|
||||
'Confirm_license_delivery' => 'Потвърдете доставката на лиценз.',
|
||||
'Confirm_asset_delivery' => 'Подвърдете доставка на актив.',
|
||||
'Confirm_consumable_delivery' => 'Потвърдете доставка на консуматив.',
|
||||
'current_QTY' => 'Текуща наличност',
|
||||
@@ -55,7 +55,7 @@ return array(
|
||||
'requested' => 'Изискан:',
|
||||
'reset_link' => 'Вашата връзка за повторно задаване на паролата',
|
||||
'reset_password' => 'Щракнете тук, за да нулирате паролата си:',
|
||||
'serial' => 'Serial',
|
||||
'serial' => 'Лицензен номер',
|
||||
'supplier' => 'Доставчик',
|
||||
'tag' => 'Етикет',
|
||||
'test_email' => 'Тест Email от Snipe-IT',
|
||||
@@ -64,8 +64,8 @@ return array(
|
||||
'There_are' => '{1} има | [2, Inf] Имат',
|
||||
'to_reset' => 'За да нулирате вашата :web password, попълнете този формуляр:',
|
||||
'type' => 'Вид',
|
||||
'user' => 'User',
|
||||
'username' => 'Username',
|
||||
'user' => 'Потребител',
|
||||
'username' => 'Потребителско име',
|
||||
'welcome' => 'Добре дошли, :name',
|
||||
'welcome_to' => 'Добре дошли: уеб!',
|
||||
'your_credentials' => 'Вашите идентификационни данни за Snipe-IT',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategorie usnadňují organizovat majetek. Takovou kategorii může být např. "Desktopy", "Notebooky", "Mobilní telefony", "Tablety", apod., ale můžete použít kategorie jakýmkoli způsobem.',
|
||||
'asset_categories' => 'Kategorie majetku',
|
||||
'category_name' => 'Jméno kategorie',
|
||||
'checkin_email' => 'Poslat uživateli zprávu při přejímce.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Klonovat Kategorii',
|
||||
'create' => 'Vytvořit kategorii',
|
||||
'edit' => 'Upravit Kategorii',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Štítků na stránku',
|
||||
'label_dimensions' => 'Rozměry štítku (palce)',
|
||||
'next_auto_tag_base' => 'Další auto přírůstek',
|
||||
'page_padding' => 'Okraje stránky (palce)',
|
||||
'purge' => 'Vyčištění odstraněných záznamů',
|
||||
'page_padding' => 'Okraje stránky (palce)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Vyčištění odstraněných záznamů',
|
||||
'labels_display_bgutter' => 'Spodní okraj štítku',
|
||||
'labels_display_sgutter' => 'Boční okraj štítku',
|
||||
'labels_fontsize' => 'Velikost písma štítku',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategorier hjælper dig med at organisere dine varer. Nogle eksempler kan være "Desktops", "Laptops", "Mobile Phones", "Tablets" osv., Men du kan bruge kategorier på nogen måde, der giver mening for dig.',
|
||||
'asset_categories' => 'Aktiver Kategorier',
|
||||
'category_name' => 'Kategorinavn',
|
||||
'checkin_email' => 'Send email til bruger ved tjek ind.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Klon Kategori',
|
||||
'create' => 'Opret kategori',
|
||||
'edit' => 'Rediger Kategori',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Etiketter pr. Side',
|
||||
'label_dimensions' => 'Etiket dimensioner (inches)',
|
||||
'next_auto_tag_base' => 'Næste automatisk stigning',
|
||||
'page_padding' => 'Sidemarginer (tommer)',
|
||||
'purge' => 'Ryd slettet poster',
|
||||
'page_padding' => 'Sidemarginer (tommer)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Ryd slettet poster',
|
||||
'labels_display_bgutter' => 'Etiket bundgitter',
|
||||
'labels_display_sgutter' => 'Label side rende',
|
||||
'labels_fontsize' => 'Etiket skriftstørrelse',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategorien helfen Ihnen beim Organisieren von Assets. Beispielkategorien sind "PCs", "Laptops", "Mobiltelefone", "Tablets" usw., jedoch können Sie Kategorien nutzen, wie Sie es für sinnvoll erachten.',
|
||||
'asset_categories' => 'Asset-Kategorien',
|
||||
'category_name' => 'Kategoriename',
|
||||
'checkin_email' => 'Dem Nutzer beim Zurücknehmen eine Mail zusenden.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Kategorie duplizieren',
|
||||
'create' => 'Kategorie erstellen',
|
||||
'edit' => 'Kategorie bearbeiten',
|
||||
|
||||
@@ -28,5 +28,5 @@ return array(
|
||||
'create_fieldset' => 'Neuer Feldsatz',
|
||||
'create_field' => 'Neues benutzerdefiniertes Feld',
|
||||
'value_encrypted' => 'Der Wert dieses Feldes ist in der Datenbank verschlüsselt. Nur Benutzer mit Administratorrechten können den entschlüsselten Wert anzeigen',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
'show_in_email' => 'Feld miteinbeziehen bei Herausgabe-Emails an die Benutzer? Verschlüsselte Felder können nicht miteinbezogen werden.',
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_assets_text' => 'Assets sind Gegenstände die durch eine Seriennummer oder Bezeichnung identifiziert werden. Meistens sind diese von höherem Wert, wobei es Sinn macht diese spezifisch zu kennzeichnen.',
|
||||
'archived' => 'Archiviert',
|
||||
'asset' => 'Asset',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'bulk_checkout' => 'Assets herausgeben',
|
||||
'checkin' => 'Asset zurücknehmen',
|
||||
'checkout' => 'Asset herausgeben',
|
||||
'clone' => 'Asset duplizieren',
|
||||
|
||||
@@ -14,5 +14,5 @@ return array(
|
||||
'view_models' => 'Modelle anzeigen',
|
||||
'fieldset' => 'Feldsatz',
|
||||
'no_custom_field' => 'Keine benutzerdefinierten Felder',
|
||||
'add_default_values' => 'Add default values',
|
||||
'add_default_values' => 'Füge Standardwerte hinzu',
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'ad_domain' => 'Active Directory Domäne',
|
||||
'ad_domain_help' => 'Meistens dieselbe wie die E-Mail Domäne.',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'admin_cc_email_help' => 'Wenn Sie eine Kopie der Rücknahme- / Herausgabe-E-Mails, die an Benutzer gehen auch an zusätzliche E-Mail-Empfänger versenden möchten, geben Sie sie hier ein. Ansonsten lassen Sie dieses Feld leer.',
|
||||
'is_ad' => 'Dies ist ein Active Directory Server',
|
||||
'alert_email' => 'Alarme senden an',
|
||||
'alerts_enabled' => 'E-Mail-Benachrichtigungen aktiviert',
|
||||
@@ -109,8 +109,8 @@ return array(
|
||||
'show_alerts_in_menu' => 'Warnungen im oberen Menü anzeigen',
|
||||
'show_archived_in_list' => 'Archivierte Assets',
|
||||
'show_archived_in_list_text' => 'Zeige archivierte Assets in der "Alle auflisten" Liste',
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'show_images_in_email' => 'Verwende Bilder in E-Mals',
|
||||
'show_images_in_email_help' => 'Deaktivieren Sie dieses Kontrollkästchen, wenn sich Ihre Snipe-IT-Installation hinter einem VPN oder einem geschlossenen Netzwerk befindet und Benutzer außerhalb des Netzwerks keine Bilder von dieser Installation in ihre E-Mails laden können.',
|
||||
'site_name' => 'Seitenname',
|
||||
'slack_botname' => 'Slack Botname',
|
||||
'slack_channel' => 'Slack Kanal',
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Etiketten pro Seite',
|
||||
'label_dimensions' => 'Etikettengröße (Zoll)',
|
||||
'next_auto_tag_base' => 'Nächster Auto-Inkrement',
|
||||
'page_padding' => 'Seiten Ränder (Zoll)',
|
||||
'purge' => 'Gelöschte Einträge bereinigen',
|
||||
'page_padding' => 'Seiten Ränder (Zoll)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Gelöschte Einträge bereinigen',
|
||||
'labels_display_bgutter' => 'Ettiketten Spaltenzwischenraum unterhalb',
|
||||
'labels_display_sgutter' => 'Ettikett Seitenabstand',
|
||||
'labels_fontsize' => 'Schriftgröße der Etiketten',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Abschicken',
|
||||
'upload' => 'Hochladen',
|
||||
'select_file' => 'Datei auswählen...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Dateien auswählen...',
|
||||
);
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
'checkin' => 'Zurücknehmen',
|
||||
'checkin_from' => 'Zurücknehmen von',
|
||||
'checkout' => 'Herausgeben',
|
||||
'checkouts_count' => 'Checkouts',
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'checkouts_count' => 'Herausgaben',
|
||||
'checkins_count' => 'Rücknahmen',
|
||||
'user_requests_count' => 'Anfragen',
|
||||
'city' => 'Stadt',
|
||||
'click_here' => 'Hier klicken',
|
||||
'clear_selection' => 'Auswahl löschen',
|
||||
@@ -68,7 +68,7 @@
|
||||
'debug_warning' => 'Warnung!',
|
||||
'debug_warning_text' => 'Diese Anwendung läuft im Produktionsmodus mit debugging aktiviert. Dies kann sensible Daten verfügbar machen, wenn Ihre Anwendung öffentlich zugänglich ist. Deaktivieren Sie den Debug-Modus, indem Sie den <code>APP_DEBUG</code>-Wert in der <code>.env</code> Datei auf <code>false</code> setzen.',
|
||||
'delete' => 'Löschen',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm' => 'Sind Sie sicher, dass Sie :item löschen möchten?',
|
||||
'deleted' => 'Gelöscht',
|
||||
'delete_seats' => 'Gelöschte Lizenzen',
|
||||
'departments' => 'Abteilungen',
|
||||
@@ -206,7 +206,7 @@
|
||||
'unknown_admin' => 'Unbekannter Administrator',
|
||||
'username_format' => 'Format der Benutzernamen',
|
||||
'update' => 'Aktualisieren',
|
||||
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar. Max upload size allowed is :size.',
|
||||
'upload_filetypes_help' => 'Zulässige Dateitypen sind png, gif, jpg, jpeg, doc, docx, pdf, txt, zip und rar. Die maximal zulässige Uploadgröße ist :size.',
|
||||
'uploaded' => 'Hochgeladen',
|
||||
'user' => 'Benutzer',
|
||||
'accepted' => 'angenommen',
|
||||
|
||||
@@ -22,7 +22,7 @@ return array(
|
||||
'Confirm_Asset_Checkin' => 'Zurücknehmen von Asset bestätigen.',
|
||||
'Confirm_Accessory_Checkin' => 'Zurücknehmen von Zubehör bestätigen.',
|
||||
'Confirm_accessory_delivery' => 'Zubehör Zustellung bestätigen.',
|
||||
'Confirm_license_delivery' => 'Confirm license delivery.',
|
||||
'Confirm_license_delivery' => 'Lizenz Herausgabe bestätigen.',
|
||||
'Confirm_asset_delivery' => 'Gegenstands Lieferung bestätigen.',
|
||||
'Confirm_consumable_delivery' => 'Verbrauchsmaterial Lieferung bestätigen.',
|
||||
'current_QTY' => 'Aktuelle Menge',
|
||||
@@ -55,7 +55,7 @@ return array(
|
||||
'requested' => 'Angefordert:',
|
||||
'reset_link' => 'Ihr Link zum Zurücksetzen des Kennworts',
|
||||
'reset_password' => 'Klicken Sie hier, um Ihr Passwort zurückzusetzen:',
|
||||
'serial' => 'Serial',
|
||||
'serial' => 'Seriennummer',
|
||||
'supplier' => 'Lieferant',
|
||||
'tag' => 'Kennzeichnung',
|
||||
'test_email' => 'Test E-Mail von Snipe-IT',
|
||||
@@ -64,8 +64,8 @@ return array(
|
||||
'There_are' => 'Es existiert {1} | [2, Inf] Es existieren',
|
||||
'to_reset' => 'Zum Zurücksetzen Ihres :web Passwortes, füllen Sie bitte dieses Formular aus:',
|
||||
'type' => 'Typ',
|
||||
'user' => 'User',
|
||||
'username' => 'Username',
|
||||
'user' => 'Benutzer',
|
||||
'username' => 'Benutzername',
|
||||
'welcome' => 'Wilkommen, :name',
|
||||
'welcome_to' => 'Willkommen bei: Web!',
|
||||
'your_credentials' => 'Ihre Snipe-IT Anmeldedaten',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Οι κατηγορίες σας βοηθούν να οργανώσετε τα στοιχεία σας. Ορισμένες κατηγορίες παραδειγμάτων ενδέχεται να είναι "Desktops", "Laptops", "Mobile Phones", "Tablets" κ.ο.κ., αλλά μπορείτε να χρησιμοποιήσετε κατηγορίες με οποιονδήποτε τρόπο που έχει νόημα για εσάς.',
|
||||
'asset_categories' => 'Κατηγορίες στοιχείων παγίων',
|
||||
'category_name' => 'Όνομα κατηγορίας',
|
||||
'checkin_email' => 'Στείλτε μήνυμα ηλεκτρονικού ταχυδρομείου στον χρήστη στο checkin.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Αντιγραφή Κατηγορίας',
|
||||
'create' => 'Δημιουργία Κατηγορίας',
|
||||
'edit' => 'Επεξεργασία Κατηγορίας',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Ετικέτες ανά σελίδα',
|
||||
'label_dimensions' => 'Διαστάσεις ετικέτας (ίντσες)',
|
||||
'next_auto_tag_base' => 'Επόμενη αυτόματη αύξηση',
|
||||
'page_padding' => 'Περιθώρια σελίδας (ίντσες)',
|
||||
'purge' => 'Καθαρισμός αρχείων που έχουν διαγραφεί',
|
||||
'page_padding' => 'Περιθώρια σελίδας (ίντσες)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Καθαρισμός αρχείων που έχουν διαγραφεί',
|
||||
'labels_display_bgutter' => 'Ετικέτα κάτω υδρορροή',
|
||||
'labels_display_sgutter' => 'Εσωτερική υδρορροή ετικέτας',
|
||||
'labels_fontsize' => 'Μέγεθος γραμματοσειράς ετικέτας',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Categories help you organize your items. Some example categories might be "Desktops", "Laptops", "Mobile Phones", "Tablets", and so on, but you can use categories any way that makes sense for you.',
|
||||
'asset_categories' => 'Asset Categories',
|
||||
'category_name' => 'Category Name',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Clone Category',
|
||||
'create' => 'Create Category',
|
||||
'edit' => 'Edit Category',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Labels per page',
|
||||
'label_dimensions' => 'Label dimensions (inches)',
|
||||
'next_auto_tag_base' => 'Next auto-increment',
|
||||
'page_padding' => 'Page margins (inches)',
|
||||
'purge' => 'Purge Deleted Records',
|
||||
'page_padding' => 'Page margins (inches)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Purge Deleted Records',
|
||||
'labels_display_bgutter' => 'Label bottom gutter',
|
||||
'labels_display_sgutter' => 'Label side gutter',
|
||||
'labels_fontsize' => 'Label font size',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategori membantu mengatur barang-barang anda. Beberapa contoh kategori seperti "Desktop", "Laptop", "Mobile Phones", "Tablet", dan sebagainya, namun Anda tetap dapat menggunakan kategori dengan cara apapun yang masuk akal bagi Anda.',
|
||||
'asset_categories' => 'Kategori Aset',
|
||||
'category_name' => 'Nama Kategori',
|
||||
'checkin_email' => 'Kirim email ke pengguna saat pengecekan.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Salin Kategori',
|
||||
'create' => 'Buat Kategori',
|
||||
'edit' => 'Edit Kategori',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Label per halaman',
|
||||
'label_dimensions' => 'Dimensi label (inci)',
|
||||
'next_auto_tag_base' => 'Berikut auto-kenaikan',
|
||||
'page_padding' => 'Margin halaman (inci)',
|
||||
'purge' => 'Bersihkan Arsip yang Dihapus',
|
||||
'page_padding' => 'Margin halaman (inci)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Bersihkan Arsip yang Dihapus',
|
||||
'labels_display_bgutter' => 'Beri label saluran bawah',
|
||||
'labels_display_sgutter' => 'Beri label sisi saluran',
|
||||
'labels_fontsize' => 'Beri label ukuran huruf',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Categories help you organize your items. Some example categories might be "Desktops", "Laptops", "Mobile Phones", "Tablets", and so on, but you can use categories any way that makes sense for you.',
|
||||
'asset_categories' => 'Asset Categories',
|
||||
'category_name' => 'Category Name',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Clone Category',
|
||||
'create' => 'Create Category',
|
||||
'edit' => 'Edit Category',
|
||||
|
||||
@@ -4,8 +4,8 @@ return array(
|
||||
'custom_fields' => 'Custom Fields',
|
||||
'field' => 'Field',
|
||||
'about_fieldsets_title' => 'About Fieldsets',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
|
||||
'custom_format' => 'Custom regex format...',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
|
||||
'custom_format' => 'Custom Regex format...',
|
||||
'encrypt_field' => 'Encrypt the value of this field in the database',
|
||||
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
|
||||
'encrypted' => 'Encrypted',
|
||||
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Labels per page',
|
||||
'label_dimensions' => 'Label dimensions (inches)',
|
||||
'next_auto_tag_base' => 'Next auto-increment',
|
||||
'page_padding' => 'Page margins (inches)',
|
||||
'purge' => 'Purge Deleted Records',
|
||||
'page_padding' => 'Page margins (inches)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Purge Deleted Records',
|
||||
'labels_display_bgutter' => 'Label bottom gutter',
|
||||
'labels_display_sgutter' => 'Label side gutter',
|
||||
'labels_fontsize' => 'Label font size',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Las categorías te ayudan a organizar tus elementos. Algunos ejemplos de categoría pueden ser "Desktops", "Laptops", "Teléfonos Móviles", "Tablets", y otros, pero puedes usar las categorías de cualquier manera que tengan sentido para ti.',
|
||||
'asset_categories' => 'Categorías de Equipos',
|
||||
'category_name' => 'Nombre de la Categoría',
|
||||
'checkin_email' => 'Enviar un correo al usuario al registrar.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Clonar Categoría',
|
||||
'create' => 'Crear Categoría',
|
||||
'edit' => 'Editar Categoría',
|
||||
|
||||
@@ -28,5 +28,5 @@ return array(
|
||||
'create_fieldset' => 'Nuevo Fieldset',
|
||||
'create_field' => 'Nuevo Campo Personalizado',
|
||||
'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Sólo los administradores pueden ver el valor desencriptado',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
'show_in_email' => '¿Incluir el valor de este campo en las notificaciones por correo de asignaciones de activos? Ten en cuenta que los campos encriptados no se pueden incluir en los correos electrónicos.',
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_assets_text' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.',
|
||||
'archived' => 'Archivado',
|
||||
'asset' => 'Equipo',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'bulk_checkout' => 'Activos Asignados',
|
||||
'checkin' => 'Quitar Equipo',
|
||||
'checkout' => 'Activo de pago',
|
||||
'clone' => 'Clonar Equipo',
|
||||
|
||||
@@ -14,5 +14,5 @@ return array(
|
||||
'view_models' => 'Ver Modelos',
|
||||
'fieldset' => 'Grupos de campo',
|
||||
'no_custom_field' => 'No hay campos personalizados',
|
||||
'add_default_values' => 'Add default values',
|
||||
'add_default_values' => 'Agregar valores predeterminados',
|
||||
);
|
||||
|
||||
@@ -4,8 +4,8 @@ return array(
|
||||
'ad' => 'Directorio Activo',
|
||||
'ad_domain' => 'Dominio del Directorio Activo',
|
||||
'ad_domain_help' => 'Esto es a veces el mismo que su correo electrónico de dominio, pero no siempre.',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'admin_cc_email' => 'Email CC',
|
||||
'admin_cc_email_help' => 'Si deseas enviar una notificación por correo electrónico de las asignaciones de activos que se envían a los usuarios a una cuenta adicional, ingrésela aquí. De lo contrario, deja este campo en blanco.',
|
||||
'is_ad' => 'Este es un servidor de Directorio Activo',
|
||||
'alert_email' => 'Enviar alertas a',
|
||||
'alerts_enabled' => 'Alertas habilitadas',
|
||||
@@ -109,8 +109,8 @@ return array(
|
||||
'show_alerts_in_menu' => 'Mostrar alertas en el menú superior',
|
||||
'show_archived_in_list' => 'Activos archivados',
|
||||
'show_archived_in_list_text' => 'Mostrar activos archivados en el listado de "todos los archivos"',
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'show_images_in_email' => 'Mostrar imágenes en emails',
|
||||
'show_images_in_email_help' => 'Desmarca esta casilla si tu instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes servidas desde este servidor en sus correos electrónicos.',
|
||||
'site_name' => 'Nombre del sitio',
|
||||
'slack_botname' => 'Nombre de bot en Slack',
|
||||
'slack_channel' => 'Canal en Slack',
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Etiquetas por pàgina',
|
||||
'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)',
|
||||
'next_auto_tag_base' => 'Siguiente incremento automático',
|
||||
'page_padding' => 'Margenès de pàgina (pulgadas)',
|
||||
'purge' => 'Purgar registros eliminados',
|
||||
'page_padding' => 'Margenès de pàgina (pulgadas)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Purgar registros eliminados',
|
||||
'labels_display_bgutter' => 'Borde inferior de la Etiqueta',
|
||||
'labels_display_sgutter' => 'Borde lateral de la Etiqueta',
|
||||
'labels_fontsize' => 'Tamaño de fuente de la etiqueta',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Enviar',
|
||||
'upload' => 'Subir',
|
||||
'select_file' => 'Seleccionar Archivo...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Selecciona Archivos...',
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'activity_report' => 'Reporte de Actividad',
|
||||
'address' => 'Dirección',
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Administrator',
|
||||
'administrator' => 'Administrador',
|
||||
'add_seats' => 'Sitios añadidos',
|
||||
'all_assets' => 'Todos los Equipos',
|
||||
'all' => 'Todos los',
|
||||
@@ -39,9 +39,9 @@
|
||||
'checkin' => 'Quitar Equipo',
|
||||
'checkin_from' => 'Devolución de',
|
||||
'checkout' => 'Asignar a un usuario',
|
||||
'checkouts_count' => 'Checkouts',
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'checkouts_count' => 'Dar de Baja',
|
||||
'checkins_count' => 'Dar de Alta',
|
||||
'user_requests_count' => 'Solicitudes',
|
||||
'city' => 'Ciudad',
|
||||
'click_here' => 'Pulsa aquí',
|
||||
'clear_selection' => 'Eliminar Selección',
|
||||
@@ -68,7 +68,7 @@
|
||||
'debug_warning' => '¡Advertencia!',
|
||||
'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor <code>APP_DEBUG</code> en su archivo <code>.env</code> a <code>false</code>.',
|
||||
'delete' => 'Borrar',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm' => '¿Estás seguro de eliminar :item?',
|
||||
'deleted' => 'Borrado',
|
||||
'delete_seats' => 'Asientos eliminados',
|
||||
'departments' => 'Departamentos',
|
||||
@@ -206,7 +206,8 @@
|
||||
'unknown_admin' => 'Admin Desconocido',
|
||||
'username_format' => 'Formato del nombre de usuario',
|
||||
'update' => 'Actualizar',
|
||||
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar. Max upload size allowed is :size.',
|
||||
'upload_filetypes_help' => 'Tipos de archivos permitidos: png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.
|
||||
El tamaño máximo de archivo es :size.',
|
||||
'uploaded' => 'Subido',
|
||||
'user' => 'Usuario',
|
||||
'accepted' => 'aceptado',
|
||||
|
||||
@@ -22,7 +22,7 @@ return array(
|
||||
'Confirm_Asset_Checkin' => 'Confirmación de retorno de activo.',
|
||||
'Confirm_Accessory_Checkin' => 'Confirmar devolución del accesorio.',
|
||||
'Confirm_accessory_delivery' => 'Confirman entrega de accesorio.',
|
||||
'Confirm_license_delivery' => 'Confirm license delivery.',
|
||||
'Confirm_license_delivery' => 'Confirmar entrega de licencia.',
|
||||
'Confirm_asset_delivery' => 'Confirman entrega de activos.',
|
||||
'Confirm_consumable_delivery' => 'Confirmar entrega consumible.',
|
||||
'current_QTY' => 'Cantidad actual',
|
||||
@@ -55,7 +55,7 @@ return array(
|
||||
'requested' => 'Solicitado:',
|
||||
'reset_link' => 'Tu enlace de restablecimiento de contraseña',
|
||||
'reset_password' => 'Haga Clic aquí para restablecer su contraseña:',
|
||||
'serial' => 'Serial',
|
||||
'serial' => 'Número de serie',
|
||||
'supplier' => 'Proveedor',
|
||||
'tag' => 'Etiqueta',
|
||||
'test_email' => 'Email de prueba de Snipe-IT',
|
||||
@@ -64,8 +64,8 @@ return array(
|
||||
'There_are' => 'Hay',
|
||||
'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:',
|
||||
'type' => 'Tipo',
|
||||
'user' => 'User',
|
||||
'username' => 'Username',
|
||||
'user' => 'Usuario',
|
||||
'username' => 'Nombre de usuario',
|
||||
'welcome' => 'Bienvenido, :name',
|
||||
'welcome_to' => '¡Bienvenido a: web!',
|
||||
'your_credentials' => 'Tus credenciales de Snipe-IT',
|
||||
|
||||
@@ -5,7 +5,8 @@ return array(
|
||||
'about_categories' => 'Las categorías te ayudan a organizar los equipos. Ejemplos de categorías: "PCs", "Portátiles", "Móviles", "Tabletas", etc.',
|
||||
'asset_categories' => 'Categorias',
|
||||
'category_name' => 'Categoría',
|
||||
'checkin_email' => 'Enviar un correo al usuario al efectuar la devolución.',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Clonar Categoría',
|
||||
'create' => 'Crear Categoría',
|
||||
'edit' => 'Editar Categoría',
|
||||
|
||||
@@ -28,5 +28,5 @@ return array(
|
||||
'create_fieldset' => 'Nuevo grupo de campos',
|
||||
'create_field' => 'Nuevo campo personalizado',
|
||||
'value_encrypted' => 'El valor de este campo está encriptado en la base de datos. Solo los administradores pueden ver el valor desencriptado',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
'show_in_email' => '¿Incluir el valor de este campo en las notificaciones por correo de asignaciones de activos? Ten en cuenta que los campos encriptados no se pueden incluir en los correos electrónicos.',
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_assets_text' => 'Los activos son elementos con número de serie o etiqueta de activos. Tienden a ser artículos de alto valor donde es importante identificar un elemento específico.',
|
||||
'archived' => 'Archivado',
|
||||
'asset' => 'Equipo',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'bulk_checkout' => 'Activos Asignados',
|
||||
'checkin' => 'Quitar Equipo',
|
||||
'checkout' => 'Activo de pago',
|
||||
'clone' => 'Clonar Equipo',
|
||||
|
||||
@@ -14,5 +14,5 @@ return array(
|
||||
'view_models' => 'Ver Modelos',
|
||||
'fieldset' => 'Grupos de campo',
|
||||
'no_custom_field' => 'No hay campos personalizados',
|
||||
'add_default_values' => 'Add default values',
|
||||
'add_default_values' => 'Agregar valores predeterminados',
|
||||
);
|
||||
|
||||
@@ -4,8 +4,8 @@ return array(
|
||||
'ad' => 'Directorio Activo',
|
||||
'ad_domain' => 'Dominio del Directorio Activo',
|
||||
'ad_domain_help' => 'Esto es a veces el mismo que su correo electrónico de dominio, pero no siempre.',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'admin_cc_email' => 'Email CC',
|
||||
'admin_cc_email_help' => 'Si deseas enviar una notificación por correo electrónico de las asignaciones de activos que se envían a los usuarios a una cuenta adicional, ingrésela aquí. De lo contrario, deja este campo en blanco.',
|
||||
'is_ad' => 'Este es un servidor de Directorio Activo',
|
||||
'alert_email' => 'Enviar alertas a',
|
||||
'alerts_enabled' => 'Alertas habilitadas',
|
||||
@@ -109,8 +109,8 @@ return array(
|
||||
'show_alerts_in_menu' => 'Mostrar alertas en el menú superior',
|
||||
'show_archived_in_list' => 'Activos archivados',
|
||||
'show_archived_in_list_text' => 'Mostrar activos archivados en el listado de "todos los archivos"',
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'show_images_in_email' => 'Mostrar imágenes en emails',
|
||||
'show_images_in_email_help' => 'Desmarca esta casilla si tu instalación de Snipe-IT está detrás de una red privada o VPN y los usuarios fuera de la red no pueden cargar las imágenes servidas desde este servidor en sus correos electrónicos.',
|
||||
'site_name' => 'Nombre del sitio',
|
||||
'slack_botname' => 'Nombre de bot en Slack',
|
||||
'slack_channel' => 'Canal en Slack',
|
||||
@@ -131,8 +131,11 @@ return array(
|
||||
'labels_per_page' => 'Etiquetas por pàgina',
|
||||
'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)',
|
||||
'next_auto_tag_base' => 'Siguiente incremento automático',
|
||||
'page_padding' => 'Margenès de pàgina (pulgadas)',
|
||||
'purge' => 'Purgar registros eliminados',
|
||||
'page_padding' => 'Margenès de pàgina (pulgadas)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'purge' => 'Purgar registros eliminados',
|
||||
'labels_display_bgutter' => 'Borde inferior de la Etiqueta',
|
||||
'labels_display_sgutter' => 'Borde lateral de la Etiqueta',
|
||||
'labels_fontsize' => 'Tamaño de fuente de la etiqueta',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Enviar',
|
||||
'upload' => 'Subir',
|
||||
'select_file' => 'Seleccionar Archivo...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Selecciona Archivos...',
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'activity_report' => 'Reporte de Actividad',
|
||||
'address' => 'Dirección',
|
||||
'admin' => 'Admin',
|
||||
'administrator' => 'Administrator',
|
||||
'administrator' => 'Administrador',
|
||||
'add_seats' => 'Sitios añadidos',
|
||||
'all_assets' => 'Todos los Equipos',
|
||||
'all' => 'Todos los',
|
||||
@@ -39,9 +39,9 @@
|
||||
'checkin' => 'Quitar Equipo',
|
||||
'checkin_from' => 'Devolución de',
|
||||
'checkout' => 'Asignar a un usuario',
|
||||
'checkouts_count' => 'Checkouts',
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'checkouts_count' => 'Dar de Baja',
|
||||
'checkins_count' => 'Dar de Alta',
|
||||
'user_requests_count' => 'Solicitudes',
|
||||
'city' => 'Ciudad',
|
||||
'click_here' => 'Pulsa aquí',
|
||||
'clear_selection' => 'Eliminar Selección',
|
||||
@@ -68,7 +68,7 @@
|
||||
'debug_warning' => '¡Advertencia!',
|
||||
'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor <code>APP_DEBUG</code> en su archivo <code>.env</code> a <code>false</code>.',
|
||||
'delete' => 'Borrar',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm' => '¿Estás seguro de eliminar :item?',
|
||||
'deleted' => 'Borrado',
|
||||
'delete_seats' => 'Asientos eliminados',
|
||||
'departments' => 'Departamentos',
|
||||
@@ -206,7 +206,8 @@
|
||||
'unknown_admin' => 'Admin Desconocido',
|
||||
'username_format' => 'Formato del nombre de usuario',
|
||||
'update' => 'Actualizar',
|
||||
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar. Max upload size allowed is :size.',
|
||||
'upload_filetypes_help' => 'Tipos de archivos permitidos: png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.
|
||||
El tamaño máximo de archivo es :size.',
|
||||
'uploaded' => 'Subido',
|
||||
'user' => 'Usuario',
|
||||
'accepted' => 'aceptado',
|
||||
|
||||
@@ -22,7 +22,7 @@ return array(
|
||||
'Confirm_Asset_Checkin' => 'Confirmación de retorno de activo.',
|
||||
'Confirm_Accessory_Checkin' => 'Confirmar devolución del accesorio.',
|
||||
'Confirm_accessory_delivery' => 'Confirman entrega de accesorio.',
|
||||
'Confirm_license_delivery' => 'Confirm license delivery.',
|
||||
'Confirm_license_delivery' => 'Confirmar entrega de licencia.',
|
||||
'Confirm_asset_delivery' => 'Confirman entrega de activos.',
|
||||
'Confirm_consumable_delivery' => 'Confirmar entrega consumible.',
|
||||
'current_QTY' => 'Cantidad actual',
|
||||
@@ -55,7 +55,7 @@ return array(
|
||||
'requested' => 'Solicitado:',
|
||||
'reset_link' => 'Tu enlace de restablecimiento de contraseña',
|
||||
'reset_password' => 'Haga Clic aquí para restablecer su contraseña:',
|
||||
'serial' => 'Serial',
|
||||
'serial' => 'Número de serie',
|
||||
'supplier' => 'Proveedor',
|
||||
'tag' => 'Etiqueta',
|
||||
'test_email' => 'Email de prueba de Snipe-IT',
|
||||
@@ -64,8 +64,8 @@ return array(
|
||||
'There_are' => 'Hay',
|
||||
'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:',
|
||||
'type' => 'Tipo',
|
||||
'user' => 'User',
|
||||
'username' => 'Username',
|
||||
'user' => 'Usuario',
|
||||
'username' => 'Nombre de usuario',
|
||||
'welcome' => 'Bienvenido, :name',
|
||||
'welcome_to' => '¡Bienvenido a: web!',
|
||||
'your_credentials' => 'Tus credenciales de Snipe-IT',
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'about_accessories_title' => 'Sobre accesorios',
|
||||
'about_accessories_text' => 'Accesorios son cualquier cosa que entregues a los usuarios pero que no tenga numero de serie (o no te interese seguirlos en forma unívoca). Por ejemplo, ratones o teclados.',
|
||||
'accessory_category' => 'Categoría de accesorio',
|
||||
'accessory_name' => 'Nombre de accesorio',
|
||||
'checkout' => 'Checkout Accesorio',
|
||||
'checkin' => 'Checkin Accesorio',
|
||||
'create' => 'Crear Accesorio',
|
||||
'edit' => 'Editar Accesorio',
|
||||
'eula_text' => 'Categoría EULA',
|
||||
'eula_text_help' => 'Este campo permite personalizar sus EULAs para tipos específicos de equipos. Si solo tiene un EULA para todos sus equipos, puede seleccionar la siguiente opción para usar el valor por defecto.',
|
||||
'require_acceptance' => 'Requerir confirmación de usuarios para la aceptación de equipos en esta categoría.',
|
||||
'no_default_eula' => 'No se encontró un EULA por defecto. Agregue uno en Configuración.',
|
||||
'total' => 'Total ',
|
||||
'remaining' => 'Disponibles',
|
||||
'update' => 'Actualizar Accesorio',
|
||||
'use_default_eula' => 'En su lugar, use el <a href="#" data-toggle="modal" data-target="#eulaModal">EULA por defecto</a>.',
|
||||
'use_default_eula_disabled' => '<del>En su lugar, use el EULA por defecto.</del> No esta configurado un EULA por defecto. Por favor agregue uno en Configuración.',
|
||||
|
||||
);
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'El accesorio no existe.',
|
||||
'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'El accesorio no fue creado, por favor, inténtalo de nuevo.',
|
||||
'success' => 'Accesorio creado correctamente.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'El accesorio no fue actualizado, por favor, inténtalo de nuevo',
|
||||
'success' => 'Accesorio actualizado correctamente.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Estas seguro de borrar este accesorio?',
|
||||
'error' => 'Ha habido un problema eliminando este accesorio. Intentalo de nuevo.',
|
||||
'success' => 'El accesorio fue borrado con éxito.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo',
|
||||
'success' => 'Accesorio retirado correctamente.',
|
||||
'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.'
|
||||
),
|
||||
|
||||
'checkin' => array(
|
||||
'error' => 'El accesorio no fue agregado, favor vuelva a intentarlo',
|
||||
'success' => 'Accesorio devuelto correctamente.',
|
||||
'user_does_not_exist' => 'Este usuario es inválido . Inténtalo de nuevo.'
|
||||
)
|
||||
|
||||
|
||||
);
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'dl_csv' => 'Descargar CSV',
|
||||
'eula_text' => 'EULA',
|
||||
'id' => 'ID',
|
||||
'require_acceptance' => 'Aceptación',
|
||||
'title' => 'Nombre accesorio',
|
||||
|
||||
|
||||
);
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Tipo de Mantenimiento de Equipo',
|
||||
'title' => 'Título',
|
||||
'start_date' => 'Fecha de Inicio',
|
||||
'completion_date' => 'Fecha de Terminación',
|
||||
'cost' => 'Costo',
|
||||
'is_warranty' => 'Mejora de la Garantía',
|
||||
'asset_maintenance_time' => 'Tiempo de Mantenimiento de Equipo (en días)',
|
||||
'notes' => 'Notas',
|
||||
'update' => 'Actualizar Mantenimiento de Equipo',
|
||||
'create' => 'Crear Mantenimiento de Equipo'
|
||||
];
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Mantenimientos de Equipo',
|
||||
'edit' => 'Editar Mantenimiento de Equipo',
|
||||
'delete' => 'Eliminar Mantenimiento de Equipo',
|
||||
'view' => 'Ver Detalle de Mantenimiento de Equipo',
|
||||
'repair' => 'Reparación',
|
||||
'maintenance' => 'Mantenimiento',
|
||||
'upgrade' => 'Mejora'
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'El Mantenimiento de Equipo que buscaba no se encontró!',
|
||||
'delete' => [
|
||||
'confirm' => '¿Está seguro que desea eliminar este mantenimiento de equipo?',
|
||||
'error' => 'Hubo un problema al eliminar el mantenimiento de equipo. Por favor intente nuevamente.',
|
||||
'success' => 'El mantenimiento de equipo fue eliminado de manera exitosa.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'El Mantenimiento de Equipo no fue creado, por favor intente nuevamente.',
|
||||
'success' => 'El Mantenimiento de Equipo fue creado de manera exitosa.'
|
||||
],
|
||||
'edit' => [
|
||||
'error' => 'El mantenimiento de activo no fue editado. Por favor, intenta de nuevo.',
|
||||
'success' => 'Mantenimiento de activo editado con éxito.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Sin Completar',
|
||||
'warranty' => 'Garantía',
|
||||
'not_warranty' => 'Sin Garantía',
|
||||
];
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Mantenimiento de Equipo',
|
||||
'asset_name' => 'Nombre del Equipo',
|
||||
'is_warranty' => 'Garantía',
|
||||
'dl_csv' => 'Descargar CSV'
|
||||
];
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'about_categories_title' => 'Sobre categorias',
|
||||
'about_categories' => 'Las categorías te ayudan a organizar los equipos. Ejemplos de categorías: "PCs", "Portátiles", "Móviles", "Tabletas", etc.',
|
||||
'asset_categories' => 'Categorias',
|
||||
'category_name' => 'Categoría',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'clone' => 'Clonar Categoría',
|
||||
'create' => 'Crear Categoría',
|
||||
'edit' => 'Editar Categoría',
|
||||
'eula_text' => 'Categoría EULA',
|
||||
'eula_text_help' => 'Este campo permite personalizar sus EULAs para tipos específicos de equipos. Si solo tiene un EULA para todos sus equipos, puede seleccionar la siguiente opción para usar el valor por defecto.',
|
||||
'name' => 'Nombre de la categoría',
|
||||
'require_acceptance' => 'Requerir confirmación de usuarios para la aceptación de equipos en esta categoría.',
|
||||
'required_acceptance' => 'Se enviará un email a este usuario con un link para confirmar la aceptación de este item.',
|
||||
'required_eula' => 'Se enviará un email a este usuario con una copia del EULA',
|
||||
'no_default_eula' => 'No se encontró un EULA por defecto. Agregue uno en Configuración.',
|
||||
'update' => 'Actualizar Categoría',
|
||||
'use_default_eula' => 'En su lugar, use el <a href="#" data-toggle="modal" data-target="#eulaModal">EULA por defecto</a>.',
|
||||
'use_default_eula_disabled' => '<del>En su lugar, use el EULA por defecto.</del> No esta configurado un EULA por defecto. Por favor agregue uno en Configuración.',
|
||||
|
||||
);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user