function onEdit(e) {
var sheet = e.source.getActiveSheet();
if (sheet.getName() == 'جدول المبيعات') {
var range = e.range;
var row = range.getRow();
var column = range.getColumn();
// الجزء الجديد للتحقق من العمودين I و J
if (column === 9 || column === 10) {
var paidZ = sheet.getRange(row, 9).getValue();
var paidM = sheet.getRange(row, 10).getValue();
// إذا تم الدفع كاملًا
if (paidZ === true && paidM === true) {
// تغيير لون النص ولون الخلية ليكونا متطابقين (أصفر على أصفر)
sheet.getRange(row, 1, 1, 10).setFontColor("#ffff01").setBackground("#ffff01");
sheet.getRange(row, 11).setValue('إخفاء');
} else {
// إعادة اللون إلى الحالة الافتراضية (أسود على أبيض)
sheet.getRange(row, 1, 1, 10).setFontColor("#000000").setBackground("#ffffff");
// إذا لم يتم الدفع كاملًا
sheet.getRange(row, 11).setValue('عرض');
}
}
}
// باقي الكود كما هو
if ((column === 1 || column === 2) && !range.getValue()) {
sheet.getRange(row, 5, 1, 4).clearContent();
return;
}
if (column === 1 || column === 2) {
updateSupplier(row);
}
if (column === 1 || column === 2 || column === 3) {
updateCapital(row);
if (column !== 3) {
updateSalePrice(row);
}
updateProfit(row);
updateDate(row);
}
if (column === 3 || column === 6) {
updateProfit(row);
}
}
// ... باقي الأكواد (الوظائف الأخرى) كما هي، لا تحتاج لتعديل
function updateProfit(row) {
var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
// استخدم القيمة الموجودة في العمود أو استخدم صفر إذا كانت القيمة فارغة
var salePrice = transactionSheet.getRange(row, 3).getValue() || 0;
var capital = transactionSheet.getRange(row, 6).getValue() || 0;
// الربح الصافي = السعر - رأس المال
var netProfit = salePrice - capital;
// كتابة الربح الصافي في العمود H
transactionSheet.getRange(row, 8).setValue(netProfit);
}
// ... باقي الأكواد (الوظائف الأخرى) كما هي، لا تحتاج لتعديل
function updateSalePrice(row) {
var customerTransactionSheet = SpreadsheetApp.getActive().getSheetByName('معاملات العملاء');
var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
var item = transactionSheet.getRange(row, 1).getValue();
var customer = transactionSheet.getRange(row, 2).getValue();
var itemRow = findRow(customerTransactionSheet, item, 'A');
var customerColumn = findColumn(customerTransactionSheet, customer, '1');
var salePriceCell = transactionSheet.getRange(row, 3);
}
function updateSupplier(row) {
var dataSheet = SpreadsheetApp.getActive().getSheetByName('جدول الداتا');
var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
var data = dataSheet.getDataRange().getValues();
var item = transactionSheet.getRange(row, 1).getValue();
for (var i = 0; i < data.length; i++) {
if (data[i][0] == item) {
var supplier = data[i][1];
transactionSheet.getRange(row, 5).setValue(supplier);
}
}
}
function updateCapital(row) {
var dataSheet = SpreadsheetApp.getActive().getSheetByName('جدول الداتا');
var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
var data = dataSheet.getDataRange().getValues();
var item = transactionSheet.getRange(row, 1).getValue();
for (var i = 0; i < data.length; i++) {
if (data[i][0] == item) {
var capital = data[i][2];
transactionSheet.getRange(row, 6).setValue(capital);
}
}
}
function updateDate(row) {
var transactionSheet = SpreadsheetApp.getActive().getSheetByName('جدول المبيعات');
// احصل على اسم السلعة واسم العميل
var item = transactionSheet.getRange(row, 1).getValue();
var customer = transactionSheet.getRange(row, 2).getValue();
// احصل على القيمة الموجودة في عمود التاريخ
var existingDate = transactionSheet.getRange(row, 7).getValue();
// تحقق ما إذا كان كلا من العنصر والعميل ليس فارغًا وما إذا كان التاريخ فارغًا
if (item && customer && !existingDate) {
// أضف التاريخ والوقت الحاليين في العمود G
transactionSheet.getRange(row, 7).setValue(new Date());
}
// لا تحتاج لمسح المحتوى إذا كان عنصرًا أو عميلًا فارغًا لأن التاريخ يجب أن يبقى كما هو
}
// helper function to find the row number of a value in a specific column
function findRow(sheet, value, column) {
var data = sheet.getRange(column + ":" + column).getValues(); // get all the data in one call
for (var i = data.length - 1; i >= 0; i--) {
if (data[i][0] == value) return i + 1;
}
return null;
}
// helper function to find the column number of a value in a specific row
function findColumn(sheet, value, row) {
var data = sheet.getRange(row + ":" + row).getValues()[0]; // get all the data in one call
for (var i = data.length - 1; i >= 0; i--) {
if (data[i] == value) return i + 1;
}
return null;
}
هذا الكود الذي يعمل, لكن هنا بعض الأخطاء فيه.
مثلا,
1- كان يأخذ اسم العميل وسعره تلقائيا من الداتا لم يعد يفعل ذلك.
2- عندما اقوم بسحب السعر بطريقة السحب والافلات لا يأخذ الأوامر.
3- ينقصه بعض التعديلات, مثل القيام بانشاء جرد حساب خاص لكل عميل, ولم استطع القيام بذلك.